次のコード ブロックのうち、1 列の DataFrame の DataFrame transactionsDf の列 value と productId のすべての値ですべての一意の値を返すのはどれですか?
正解: D
説明
transactionsDf.select('value').union(transactionsDf.select('productId')).distinct() 正解です。このコード ブロックでは、複数の列で一意の値を見つけるための一般的なパターン (union と distinct) を使用しています。実際、これは非常に一般的であるため、ユニオン コマンドの Spark ドキュメントでも言及されています (以下のリンク)。
transactionsDf.select('value', 'productId').distinct()
間違い。このコード ブロックは一意の行を返しますが、一意の値は返しません。
transactionsDf.agg({'value': 'collect_set', 'productId': 'collect_set'}) 不正解です。このコード ブロックは、1 行 2 列の DataFrame を出力します。各セルには、それぞれの列に一意の値の配列があります (null を省略しても)。
transactionsDf.select(col('value'), col('productId')).agg({'*': 'count'}) いいえ。このコマンドは行数をカウントしますが、一意の値は返しません。
transactionsDf.select('value').join(transactionsDf.select('productId'), col('value')==col('productId'), 'outer') 間違っています。このコマンドは、value 列と productId 列の外部結合を実行します。そのため、2 列の DataFrame が返されます。この回答を選択した場合は、union と join の違いについて読んでみるとよいでしょう。リンクは以下に掲載されています。
詳細: pyspark.sql.DataFrame.union - PySpark 3.1.2 ドキュメント、sql - JOIN と UNION の違いは何ですか? - スタック オーバーフロー静的ノートブック | 動的ノートブック: テスト 3 を参照
次のコード ブロックのうち、season 列と wind_speed_ms 列の 2 つの列を持つ新しい DataFrame を作成するコード ブロックはどれですか?
正解: B
説明
spark.createDataFrame([("summer", 4.5), ("winter", 7.5)], ["season", "wind_speed_ms"]) 正解。このコマンドは、Spark セッションの createDataFrame メソッドを使用して、新しい DataFrame を作成します。ここで行、列、および列名がどのように渡されるかに注意してください。行は Python リストとして指定されます。リスト内のすべてのエントリが新しい行です。列は Python タプルとして指定されます (例: ("summer", 4.5))。すべての列は、タプルの 1 つのエントリです。
列名は、createDataFrame() の 2 番目の引数として指定されます。ドキュメント(以下のリンク)は、「スキーマが列名のリストである場合、各列の型はデータから推測される」(最初の引数)ことを示しています。値 4.5 と 7.5 は両方とも float 変数であるため、Spark は列 wind_speed_ms の double 型を正しく推測します。列のすべての値が
「シーズン」には文字列のみが含まれ、Spark は列を文字列として適切にキャストします。
以下のリンクから SparkSession.createDataFrame() の詳細をご覧ください。
spark.newDataFrame([("summer", 4.5), ("winter", 7.5)], ["season", "wind_speed_ms"]) いいえ、SparkSession には newDataFrame メソッドがありません。
T として pyspark.sql インポート タイプから
spark.createDataFrame((("夏", 4.5), ("冬", 7.5)), T.StructType([T.StructField("シーズン",
T.CharType()), T.StructField("季節", T.DoubleType())]))
いいえ。pyspark.sql.types には CharType 型がありません。Spark で利用可能なデータ型については、以下のリンクを参照してください。
spark.createDataFrame({"season": ["winter","summer"], "wind_speed_ms": [4.5, 7.5]}) いいえ、これは正しい Spark 構文ではありません。このオプションが正しいと考えた場合、これが正しい構文である Python の pandas パッケージを使用した経験があるかもしれません。Pandas DataFrame から Spark DataFrame を作成するには、pandasDf が Pandas DataFrame である spark.createDataFrame(pandasDf) を使用するだけです。
以下にリンクされている SparkSession.createDataFrame のドキュメントの例を使用して、Spark 構文オプションの詳細を確認してください。
spark.DataFrame({"season": ["winter","summer"], "wind_speed_ms": [4.5, 7.5]}) いいえ、Spark セッション (上記のコードでは spark で示されています) には DataFrame メソッドがありません.
詳細: pyspark.sql.SparkSession.createDataFrame - PySpark 3.1.1 ドキュメントとデータ型 - Spark 3.1.2 ドキュメント 静的ノートブック | 動的ノートブック: テスト 1 を参照