scala
  • apache-spark
  • hive
  • hivecontext
  • spark-hive
  • 2016-01-07 51 views 0 likes 
    0

    案後,查看蜂房表的數據: 我有一個表HiveTest這是一個ORC表和交易設置真,火花shell加載和查看數據無法火花更新

    var rdd= objHiveContext.sql("select * from HiveTest") 
    rdd.show() 
    

    --- 能夠查看數據

    現在我去了我的蜂房殼或ambari更新的表,例如現在,當

    hive> update HiveTest set name='test' ---Done and success 
    hive> select * from HiveTest -- able to view updated data 
    

    我可以回來火花和運行,我不能只是列名僅

    scala>var rdd1= objHiveContext.sql("select * from HiveTest") 
    scala> rdd1.show() 
    

    --This時間列打印查看任何數據,數據不來

    問題2:無法從火花更新SQL當我運行 財政> objHiveContext.sql(「更新HiveTest集名稱=‘測試’」),得到下面的錯誤

    org.apache.spark.sql.AnalysisException: 
    Unsupported language features in query: INSERT INTO HiveTest values(1,'sudhir','Software',1,'IT') 
    TOK_QUERY 0, 0,17, 0 
        TOK_FROM 0, -1,17, 0 
        TOK_VIRTUAL_TABLE 0, -1,17, 0 
         TOK_VIRTUAL_TABREF 0, -1,-1, 0 
         TOK_ANONYMOUS 0, -1,-1, 0 
         TOK_VALUES_TABLE 1, 6,17, 28 
         TOK_VALUE_ROW 1, 7,17, 28 
          1 1, 8,8, 28 
          'sudhir' 1, 10,10, 30 
          'Software' 1, 12,12, 39 
          1 1, 14,14, 50 
          'IT' 1, 16,16, 52 
        TOK_INSERT 1, 0,-1, 12 
        TOK_INSERT_INTO 1, 0,4, 12 
         TOK_TAB 1, 4,4, 12 
         TOK_TABNAME 1, 4,4, 12 
          HiveTest 1, 4,4, 12 
        TOK_SELECT 0, -1,-1, 0 
         TOK_SELEXPR 0, -1,-1, 0 
         TOK_ALLCOLREF 0, -1,-1, 0 
    
    scala.NotImplementedError: No parse rules for: 
    TOK_VIRTUAL_TABLE 0, -1,17, 0 
        TOK_VIRTUAL_TABREF 0, -1,-1, 0 
        TOK_ANONYMOUS 0, -1,-1, 0 
        TOK_VALUES_TABLE 1, 6,17, 28 
        TOK_VALUE_ROW 1, 7,17, 28 
         1 1, 8,8, 28 
         'sudhir' 1, 10,10, 30 
         'Software' 1, 12,12, 39 
         1 1, 14,14, 50 
         'IT' 1, 16,16, 52 
    
    org.apache.spark.sql.hive.HiveQl$.nodeToRelation(HiveQl.scala:1235) 
    

    此錯誤是插入語句相同類型的錯誤for update語句也。

    回答

    2

    您是否嘗試過objHiveContext.refreshTable(「HiveTest」)?

    Spark SQL積極緩存Hive Metastore數據。

    如果更新發生在Spark SQL之外,您可能會遇到一些意外的結果,因爲Spark SQL的Hive Metastore版本已過期。

    這裏有更多的一些信息:

    http://spark.apache.org/docs/latest/sql-programming-guide.html#metadata-refreshing

    http://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.hive.HiveContext

    該文檔主要是提木地板,但是這可能適用於ORC等文件格式。例如,如果將新文件添加到Spark SQL之外的目錄中,則需要在Spark SQL中調用hiveContext.refreshTable()以查看新數據。

    +0

    雅問題解決後刷新,你可以看看第二個提到 – sudhir

    相關問題