【发布时间】:2018-07-27 17:29:20
【问题描述】:
我想将一个数据框转换成一个 json 对象并将其加载到一个 json 表中。
下面是代码
创建表格
spark.sql("""create table IF NOT EXISTS user_tech.tests (
Z struct<A:string,
B:string,
C:string>
)
stored as orc """)
import org.apache.spark.sql._
初始数据帧
val df = Seq((1,2,3),(2,3,4)).toDF("A", "B", "C")
val jsonColumns = df.select("A", "B", "C")
转成json
import org.apache.spark.sql.functions._
val finalDF = jsonColumns.select(to_json(struct(col("A"), col("B"), col("C")))).as("Z")
将行插入表中
finalDF.registerTempTable("test")
spark.sql(""" select * from test """).show()
spark.sql("""Insert into user_tech.tests select * from test""")
我收到以下错误:
org.apache.spark.sql.AnalysisException: cannot resolve 'test.`structstojson(named_struct(NamePlaceholder(), A, NamePlaceholder(), B, NamePlaceholder(), C))`' due to data type mismatch: cannot cast StringType to StructType(StructField(guid,StringType,true), StructField(sessionid,StringType,true));;
【问题讨论】:
标签: scala apache-spark apache-spark-sql spark-dataframe