Spark SQL -- Hive


 

使用Saprk SQL 操作Hive的數據

前提准備:

1、啟動Hdfs,hive的數據存儲在hdfs中;

2、啟動hive -service metastore,元數據存儲在遠端,可以遠程訪問;

3、在spark的conf目錄下增加hive-site.xml配置文件,文件內容:

<configuration>
<property>
  <name>hive.metastore.uris</name>
  <value>thrift://node1:9083</value>
</property>
</configuration>

 

 

編寫Scala測試程序:

object Hive {
  def main(args: Array[String]) {
    val conf = new SparkConf()
      .setAppName("HiveDataSource")
      .setMaster("spark://node1:7077")
      
    val sc = new SparkContext(conf);
    val hiveContext = new HiveContext(sc);

    hiveContext.sql("SHOW tables").show()
    sc.stop()
  }
}

 

將程序打包到spark主機,通過spark-submit命令執行:

./bin/spark-submit  --class com.spark.test.Hive --master spark://node1:7077  ./jar/Test.jar

 

關於spark-submit命令的說明,參考官網:

http://spark.apache.org/docs/1.6.0/submitting-applications.html

 

注意點:

1、--deploy-mode cluster 在集群模式中要注意將jar文件放到hdfs中或都存在的文件位置中。

集群模式是將程序發布到works節點運行driver程序。本地模式只運行在程序提交的節點上client,結果也只輸出在終端。

 

 

--------------------------------------------------------------------------------------------------------------

重新配置CDH版本的應用,spark調用hive, 出現了找不到jar包,及配置文件的情況。

錯誤信息:

WARN  [Driver] metastore.HiveMetaStore: Retrying creating default database after error: Class org.datanucleus.api.jdo.JDOPersistenceManagerFactory was not found.
javax.jdo.JDOFatalUserException: Class org.datanucleus.api.jdo.JDOPersistenceManagerFactory was not found.
ERROR [Driver] yarn.ApplicationMaster: User class threw exception: java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

這里通過增加調用參數來實現:

/home/hadoop/app/spark-1.6.0-cdh5.10.0/bin/spark-submit \
--class HiveSql \
--master yarn-cluster \
--executor-memory 512m \
--num-executors 2 \
--files /home/hadoop/app/spark-1.6.0-cdh5.10.0/conf/hive-site.xml \
--jars /home/hadoop/lib/datanucleus-rdbms-3.2.9.jar,/home/hadoop/lib/datanucleus-core-3.2.10.jar,/home/hadoop/lib/datanucleus-api-jdo-3.2.6.jar \
spark-vmware-sql.jar

引入下面三個jar包,在spark和hive的lib目錄下可以找到。

datanucleus-core-3.2.10.jar 

datanucleus-api-jdo-3.2.6.jar  

datanucleus-api-jdo-3.2.6.jar

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM