【问题标题】:Delete from Hive table using Spark使用 Spark 从 Hive 表中删除
【发布时间】:2016-01-20 09:48:26
【问题描述】:

我正在使用 Hive 1.2.1 和 Spark 1.6,问题是我无法使用 spark shell 在 Hive 表中执行简单的删除操作。由于 hive 从 0.14 开始就支持 ACID,我希望它会在 Spark 中被允许。

 16/01/19 12:44:24 INFO hive.metastore: Connected to metastore.


 scala> hiveContext.sql("delete from testdb.test where id=2");


 16/01/19 12:44:51 INFO parse.ParseDriver: Parsing command: delete from    
 testdb.test where id=2
 16/01/19 12:44:52 INFO parse.ParseDriver: Parse Completed

 org.apache.spark.sql.AnalysisException:
 Unsupported language features in query: delete from testdb.test where id=2
 TOK_DELETE_FROM 1, 0,12, 12
   TOK_TABNAME 1, 4,6, 12
    testdb 1, 4,4, 12
     test 1, 6,6, 19
     ......

 scala.NotImplementedError: No parse rules for TOK_DELETE_FROM:
 TOK_DELETE_FROM 1, 0,12, 12
 TOK_TABNAME 1, 4,6, 12
  testdb 1, 4,4, 12
  ......

【问题讨论】:

    标签: apache-spark hive


    【解决方案1】:

    您可以在 Scala 中通过命令行运行 Hive。

    import scala.sys.process._
    val cmd = "hive -e \"delete from testdb.test where id=2\"" // Your command
    val output = cmd.!! // Captures the output
    

    另见Execute external command

    【讨论】:

    • 您提供的命令是正确的,并且可以从命令行运行,但是从 spark-shell 运行时会出现 ParseException。失败:ParseException 行 1:3 无法识别 switch 数据库语句 java.lang.RuntimeException 中的“”“”“”附近的输入:非零退出值:64
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    相关资源
    最近更新 更多