【问题标题】:PySpark HiveContext ErrorPySpark HiveContext 错误
【发布时间】:2016-01-05 15:23:57
【问题描述】:

我正在尝试使用 PySpark 使用以下命令刷新表分区。我可以发出任何其他 SQL 命令,但 MSCK REPAIR TABLE 给我带来了问题

代码:

conf = SparkConf().setAppName("PythonHiveExample")\
                  .set("spark.executor.memory", "3g")\
                  .set("spark.driver.memory", "3g")\
                  .set("spark.driver.cores", "2")\
                  .set("spark.storage.memoryFraction", "0.4")
sc = SparkContext(conf=conf)
sqlContext = HiveContext(sc)
sqlContext.sql("MSCK REPAIR TABLE testdatabase.testtable;")

错误:

文件“/usr/hdp/2.3.0.0-2557/spark/python/pyspark/sql/context.py”,第 488 行,在 sql 中 返回数据帧(self._ssql_ctx.sql(sqlQuery),自我) 调用中的文件“/usr/hdp/2.3.0.0-2557/spark/python/lib/py4j-0.8.2.1-src.zip/py4j/java_gateway.py”,第 538 行 文件“/usr/hdp/2.3.0.0-2557/spark/python/lib/py4j-0.8.2.1-src.zip/py4j/protocol.py”,第 300 行,在 get_return_value py4j.protocol.Py4JJavaError: 调用 o43.sql 时出错。 :org.apache.spark.sql.AnalysisException:在';'缺少EOF接近'10';第 1 行第 41 行

新错误:

            py4j.protocol.Py4JJavaError: An error occurred while calling o43.sql.
            : org.apache.spark.sql.AnalysisException: missing EOF at 'MSCK' near 'testdatabase'; line 1 pos 17
                    at org.apache.spark.sql.hive.HiveQl$.createPlan(HiveQl.scala:254)
                    at org.apache.spark.sql.hive.ExtendedHiveQlParser$$anonfun$hiveQl$1.apply(ExtendedHiveQlParser.scala:41)
                    at org.apache.spark.sql.hive.ExtendedHiveQlParser$$anonfun$hiveQl$1.apply(ExtendedHiveQlParser.scala:40)
                    at scala.util.parsing.combinator.Parsers$Success.map(Parsers.scala:136)
                    at scala.util.parsing.combinator.Parsers$Success.map(Parsers.scala:135)
                    at scala.util.parsing.combinator.Parsers$Parser$$anonfun$map$1.apply(Parsers.scala:242)
                    at scala.util.parsing.combinator.Parsers$Parser$$anonfun$map$1.apply(Parsers.scala:242)

【问题讨论】:

  • 您可以尝试在查询结束时删除; 吗?我记得我有一个案例可以解决这个问题。
  • 尝试使用这个 sqlContext.sql("use testdatabase;") sqlContext.sql("MSCK REPAIR TABLE testtable;")
  • 尝试了上述建议。仍然出现错误。已经在上面添加了。

标签: apache-spark hive hiveql pyspark


【解决方案1】:

我目前使用的是 Spark 1.6,下面的语句正在为我使用 hive 元存储更新分区。

sqlContext.sql("alter table schema.table_name add partition (key = value )")

【讨论】:

  • 应该是评论。
【解决方案2】:

你可以试试这个命令:

ALTER TABLE table_name ADD PARTITION 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    • 2017-05-17
    • 1970-01-01
    • 2016-04-03
    相关资源
    最近更新 更多