亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用java代碼提交Spark的hive sql任務

發布時間:2021-11-12 10:33:04 來源:億速云 閱讀:541 作者:小新 欄目:云計算

這篇文章主要介紹如何使用java代碼提交Spark的hive sql任務,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

我的環境:hadoop 2.7.1、spark 1.6.0、hive 2.0、java 1.7

  • 目標:通過java -jar xxx.jar的方式來運行提交spark應用,執行查詢hive sql。

  • 問題一:首先要提一下,按照java -jar執行,會報java.lang.OutOfMemoryError: PermGen space錯誤,所以需要使用以下參數啟動

java -Xms1024m -Xmx1024m -XX:MaxNewSize=256m  -XX:MaxPermSize=256m -jar spark.jar
  • 問題二:如果不增加datanucleus的三個jar包,會報如下的錯誤http://zengzhaozheng.blog.51cto.com/8219051/1597902?utm_source=tuicool&utm_medium=referral 

javax.jdo.JDOFatalUserException: Class org.datanucleus.api.jdo.JDOPersistenceManagerFactory was not found.
        at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementation(JDOHelper.java:1175)
        at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:808)
        at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:701)
        at org.apache.hadoop.hive.metastore.ObjectStore.getPMF(ObjectStore.java:365)
        at org.apache.hadoop.hive.metastore.ObjectStore.getPersistenceManager(ObjectStore.java:394)
        。。。
NestedThrowablesStackTrace:
java.lang.ClassNotFoundException: org.datanucleus.api.jdo.JDOPersistenceManagerFactory
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:274)
        at javax.jdo.JDOHelper$18.run(JDOHelper.java:2018)
        at javax.jdo.JDOHelper$18.run(JDOHelper.java:2016)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.jdo.JDOHelper.forName(JDOHelper.java:2015)
        at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementation(JDOHelper.java:1162)
        at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:808)
        at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:701)
        at org.apache.hadoop.hive.metastore.ObjectStore.getPMF(ObjectStore.java:365)
        at org.apache.hadoop.hive.metastore.ObjectStore.getPersistenceManager(ObjectStore.java:394)
        at org.apache.hadoop.hive.metastore.ObjectStore.initialize(ObjectStore.java:291)
        at org.apache.hadoop.hive.metastore.ObjectStore.setConf(ObjectStore.java:258)
        at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:73)
        at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:133)
        at org.apache.hadoop.hive.metastore.RawStoreProxy.<init>(RawStoreProxy.java:57)
        at org.apache.hadoop.hive.metastore.RawStoreProxy.getProxy(RawStoreProxy.java:66)
        at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.newRawStore(HiveMetaStore.java:593)
        at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMS(HiveMetaStore.java:571)
        at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultDB(HiveMetaStore.java:620)
        at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.init(HiveMetaStore.java:461)
       。。。
  • 問題三:java代碼中SparkConf設置的master,即你選擇的spark模式。我這里使用yarn-client模式,如果寫yarn-cluster是會報錯的。http://stackoverflow.com/questions/31327275/pyspark-on-yarn-cluster-mode, 其網頁內容的總結部分:

1.如果你想把spark代碼直接嵌入你的web app中,你需要使用yarn-client
2.如果你想讓你的spark代碼足夠松散耦合到yarn-cluster模式可以實際使用,你可以另起一個python的子線程來調用spark-submit來執行yarn-cluster模式。
  • 問題四: 需要增加三個配置文件:core-site.xml、hdfs-site.xml、hive-site.xml。不然啟動java -jar命令會直接報錯。

所以,正確的java調用spark執行hive sql的代碼如下

創建java工程,引入spark-assembly-1.6.0-hadoop2.6.0.jar包。這個包在spark的安裝目錄的lib目錄下有,178M,真的很大。

java調用代碼如下,我的代碼以后會打包為spark.jar,存放目錄為/data/houxm/spark/spark.jar:

package cn.centaur.test.spark;

import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.sql.hive.HiveContext;
 
public class SimpleDemo {
    public static void main(String[] args) {
    	String[] jars = new String[]{"/data/houxm/spark/spark.jar"};
        SparkConf conf = new SparkConf().setAppName("simpledemo").setMaster("yarn-client").set("executor-memory", "2g").setJars(jars).set("driver-class-path", "/data/spark/lib/mysql-connector-java-5.1.21.jar");
        JavaSparkContext sc = new JavaSparkContext(conf);
        HiveContext hiveCtx = new HiveContext(sc);
        testHive(hiveCtx);
        sc.stop();
        sc.close();
    }
 
    //測試spark sql查詢hive上面的表
    public static void testHive(HiveContext hiveCtx) {
        hiveCtx.sql("create table temp_spark_java as select mobile,num from default.mobile_id_num02 limit 10");
    }
}

在java項目的根目錄新建MANIFEST.MF文件,代碼如下:

Manifest-Version: 1.0
Class-Path: /data/spark/lib/spark-assembly-1.6.0-hadoop2.6.0.jar
   /data/spark/lib/mysql-connector-java-5.1.21.jar
   /data/spark/lib/datanucleus-api-jdo-3.2.6.jar
   /data/spark/lib/datanucleus-core-3.2.10.jar
   /data/spark/lib/datanucleus-rdbms-3.2.9.jar
Main-Class: cn.centaur.test.spark.SimpleDemo

在resources目錄(我的是maven工程,普通java工程在src下加入文件即可)下加入core-site.xml、hdfs-site.xml、hive-site.xml三個配置文件。

使用eclipse,按照此manifest文件把java代碼打包。生成jar文件,上傳至服務器,即可運行。

以上是“如何使用java代碼提交Spark的hive sql任務”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

伊宁市| 潍坊市| 灵台县| 榆社县| 涞水县| 沁阳市| 四子王旗| 南澳县| 锡林浩特市| 项城市| 承德市| 迁安市| 乌什县| 阳朔县| 杂多县| 抚宁县| 文水县| 石台县| 尖扎县| 来安县| 瓦房店市| 商丘市| 武鸣县| 武宣县| 永福县| 卢氏县| 南安市| 金山区| 南陵县| 社会| 忻城县| 清水河县| 临猗县| 宣汉县| 武宁县| 临汾市| 驻马店市| 孝义市| 通城县| 石家庄市| 丹江口市|