【问题标题】:To Compute statistics of Hive table in Spark在 Spark 中计算 Hive 表的统计信息
【发布时间】:2019-03-21 23:56:19
【问题描述】:

我创建了一个 DataFrame 来加载 CSV 文件,并创建了一个临时表来获取列统计信息。

但是,当我尝试运行 ANALYZE 命令时,我遇到了以下错误 相同的分析命令在 Hive 中成功运行。

Spark 版本:1.6.3

df = sqlContext.read
.format("com.databricks.spark.csv")
.option("header", "true") 
.option("mode", "DROPMALFORMED")
.load("/bn_data/bopis/*.csv")

// To get the statistics of columns
df.registerTempTable("bopis")

val stat=sqlContext.sql("analyze table bopis compute statistics for columns").show()

错误:

    java.lang.RuntimeException: [1.1] failure: ``with'' expected but identifier analyze found

analyze table bopis compute statistics for columns
^

请告诉我们如何使用 Spark 实现列统计

谢谢!

【问题讨论】:

    标签: scala apache-spark apache-spark-sql


    【解决方案1】:

    如果您使用FOR COLUMNS 选项,则必须传递列名列表,请参阅https://docs.databricks.com/spark/latest/spark-sql/language-manual/analyze-table.html

    在任何情况下,即使您这样做,您也会收到错误,因为您无法在临时表上运行计算统计信息。 (你会得到一个Table or view 'bopis' not found in database 'default')。

    您必须通过df.write.saveAsTable("bopis_hive")sqlContext.sql("CREATE TABLE bopis_hive as SELECT * from bopis") 创建一个完整的Hive 表

    【讨论】:

      猜你喜欢
      • 2018-09-24
      • 2017-01-30
      • 1970-01-01
      • 2020-01-21
      • 1970-01-01
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多