我已经有一个配置单元表,它是在测试之前创建的,例如它有 A(字符串类型)、B(字符串)、C(数字)列。
在测试用例中,我只想插入测试数据,稍后将对其进行查询,例如在 A、B 列中。
将只有 A 列和 B 列数据的测试数据插入到包含 diff 模式的现有表中的最佳方法是什么?
在尝试执行类似操作时,我通常会遇到模式不匹配错误、列数不匹配等错误
val df = session.createDataFrame(rows, schema)
df.write.mode(SaveMode.Append).format("orc").saveAsTable(mytableName)
其中schema
是现有的表模式session.table(mytableName).schema
,rows
是包含 A 列和 B 列值的元组列表。
有没有合适的 API 来做到这一点?
如何仅将某些字段插入到 hive 表中,重用现有的表架构?
将新列附加到要写入表的数据框。前任 -
假设您有两行数据 - 由两个元组表示:
val rows = Seq(("1", "2"), ("3", "4"))
val df = sc.parallelize(rows).toDF("A", "B")
val newDf = df.withColumn("C", lit(null).cast(IntegerType))
// Now newDf schema will be same as your table schema
println(newDf.schema)
println(session.table(mytableName).schema)
df.write.mode(SaveMode.Append).format("orc").saveAsTable(mytableName)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句