以下代碼:
val data1 = Seq(("Android", 1, "2021-07-24 12:01:19.000", "play"), ("Android", 1, "2021-07-24 12:02:19.000", "stop"),
("Apple", 1, "2021-07-24 12:03:19.000", "play"), ("Apple", 1, "2021-07-24 12:04:19.000", "stop"))
val schema1 = StructType(Array(StructField("device_id", StringType, true),
StructField("video_id", IntegerType, true),
StructField("event_timestamp", StringType, true),
StructField("event_type", StringType, true)
))
val spark = SparkSession.builder()
.enableHiveSupport()
.appName("PlayStop")
.getOrCreate()
var transaction=spark.createDataFrame(data1, schema1)
產生錯誤:
無法決議多載方法“createDataFrame”
為什么?
以及如何解決?
uj5u.com熱心網友回復:
如果您的架構包含默認StructField設定,則創建 DataFrame 的最簡單方法是簡單地應用toDF():
val transaction = data1.toDF("device_id", "video_id", "event_timestamp", "event_type")
要指定自定義架構定義,請注意createDataFrame()將 aRDD[Row]和架構作為其引數。在您的情況下,您可以將 data1 轉換為RDD[Row]如下所示:
val transaction = spark.createDataFrame(sc.parallelize(data1.map(Row(_))), schema1)
另一種方法是使用toDF,然后rdd將 DataFrame (即Dataset[Row])表示為RDD[Row]:
val transaction = spark.createDataFrame(data1.toDF.rdd, schema1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/496932.html
下一篇:sbtval不止一次評估
