apache-spark
Spark DataFrame
サーチ…
前書き
DataFrameは、行と型付きの列にまとめられたデータの抽象化です。これは、リレーショナルSQLベースのデータベースに見られるデータに似ています。 Spark 2.0のDataset [Row]の型エイリアスに変換されましたが、スキーマの柔軟性とSQLベースの操作を利用して、複雑な処理パイプラインにはまだ広く使用されています。
Scalaでのデータフレームの作成
DataFramesを作成する方法はたくさんあります。ローカルリスト、分散RDD、またはデータソースからの読み込みから作成できます。
toDFを使用する
spark sql implicitsをインポートすると、内容がProductサブタイプ(タプルとケース・クラスはProductサブタイプのよく知られている例)のものであれば、ローカルSeq、ArrayまたはRDDからDataFrameを作成できます。例えば:
import sqlContext.implicits._
val df = Seq(
(1, "First Value", java.sql.Date.valueOf("2010-01-01")),
(2, "Second Value", java.sql.Date.valueOf("2010-02-01"))
).toDF("int_column", "string_column", "date_column")
createDataFrameの使用
別のオプションは、 createDataFrame
存在するcreateDataFrame
メソッドを使用しています。このオプションは、のように製品のサブタイプのローカルリストまたはRDDSから作成することができますtoDF
が、列の名前は同じ手順で設定されていません。例えば:
val df1 = sqlContext.createDataFrame(Seq(
(1, "First Value", java.sql.Date.valueOf("2010-01-01")),
(2, "Second Value", java.sql.Date.valueOf("2010-02-01"))
))
さらに、このアプローチでは、結果のDataFrameのスキーマの定義にschema
パラメータが渡されている限り、 Row
インスタンスのRDDから作成することができます。例:
import org.apache.spark.sql.types._
val schema = StructType(List(
StructField("integer_column", IntegerType, nullable = false),
StructField("string_column", StringType, nullable = true),
StructField("date_column", DateType, nullable = true)
))
val rdd = sc.parallelize(Seq(
Row(1, "First Value", java.sql.Date.valueOf("2010-01-01")),
Row(2, "Second Value", java.sql.Date.valueOf("2010-02-01"))
))
val df = sqlContext.createDataFrame(rdd, schema)
情報源からの読書
DataFrameを作成する最も一般的な方法は、データソースからのものかもしれません。たとえば、hdfsのパーケットファイルから作成することができます。
val df = sqlContext.read.parquet("hdfs:/path/to/file")
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow