자바 코드 를 사용 하여 Spark 의 hive sql 작업 을 제출 합 니 다. run as 자바 application
6006 단어 spark자바 코드 제출 응용
java -Xms1024m -Xmx1024m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -jar spark.jar
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)
。。。
1. spark web app , yarn-client
2. spark yarn-cluster , python spark-submit yarn-cluster 。
따라서 정확 한 자바 호출 spark 실행 hive sql 코드 는 다음 과 같 습 니 다.
자바 프로젝트 를 만 들 고 spark - assembly - 1.6.0 - hadop 2.6.0. jar 패 키 지 를 도입 합 니 다.이 가방 은 spark 설치 디 렉 터 리 의 lib 디 렉 터 리 아래 178 M 이 있 습 니 다. 정말 큽 니 다.
자바 호출 코드 는 다음 과 같 습 니 다. 제 코드 는 나중에 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");
}
}
자바 프로젝트 의 루트 디 렉 터 리 에 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 프로젝트 입 니 다. 일반 자바 프로젝트 는 src 에 파일 을 추가 하면 됩 니 다) 에 core - site. xml, hdfs - site. xml, hive - site. xml 세 개의 프로필 을 추가 합 니 다.
eclipse 를 사용 하여 이 manifest 파일 에 따라 자바 코드 를 포장 합 니 다.jar 파일 을 생 성하 여 서버 에 업로드 하면 실행 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spark 팁: 컴퓨팅 집약적인 작업을 위해 병합 후 셔플 파티션 비활성화작은 입력에서 UDAF(사용자 정의 집계 함수) 내에서 컴퓨팅 집약적인 작업을 수행할 때 spark.sql.adaptive.coalescePartitions.enabled를 false로 설정합니다. Apache Sp...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.