Pyspark SaveAsTable不从SQL推断模式

时间:2016-09-11 19:04:07

标签: pyspark

我正在尝试通过执行以下操作从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改变了什么?

1 个答案:

答案 0 :(得分:0)

我认为您在使用saveAsTable时必须指定格式。

但是,还有另一种方法可以将DataFrame保存到Hive表。

  1. 创建临时视图。

    df.createOrReplaceTempView("df")

  2. 运行Spark sql以从此临时视图创建表。

    spark.sql("create table if not exists tbName as select * from df")