我正在尝试通过执行以下操作从SQL查询的输出创建表:
sqlContext = HiveContext(self.sc)
j = "select a as a1, b as b1, c as c1 from x"
df = self.sqlContext.sql(j)
df.write.saveAsTable(target_table)
这会使表格保存2列 - 键和值而不是列a1,b1,c1。我想这是发生的,因为我没有在这里定义架构。但是同样的方法用于处理不推荐使用的df.saveAsTable(table),它用于自动推断架构。
使用新的DataFrameWriter改变了什么?
答案 0 :(得分:0)
我认为您在使用saveAsTable
时必须指定格式。
但是,还有另一种方法可以将DataFrame保存到Hive表。
创建临时视图。
df.createOrReplaceTempView("df")
运行Spark sql以从此临时视图创建表。
spark.sql("create table if not exists tbName as select * from df")