[HADOOP] SparkSQL + Hive + Hbase + HbaseIntegration이 작동하지 않습니다.
HADOOPSparkSQL + Hive + Hbase + HbaseIntegration이 작동하지 않습니다.
하이브 테이블을 연결하려고 할 때 오류가 발생합니다. HbaseIntegration을 통해 생성) 스파크
내가 따라야 할 단계 : 하이브 테이블 생성 코드 :
CREATE TABLE test.sample(id string,name string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH
SERDEPROPERTIES ("hbase.columns.mapping" = ":key,details:name")
TBLPROPERTIES ("hbase.table.name" = "sample");
서술 시험;
col_name data_type comment
id string from deserializer
name string from deserializer
다음 명령으로 Spark shell을 시작합니다 :
spark-shell --master local[2] --driver-class-path /usr/local/hive/lib/hive-
hbase-handler-1.2.1.jar:
/usr/local/hbase/lib/hbase-server-0.98.9-
hadoop2.jar:/usr/local/hbase/lib/hbase-protocol-0.98.9-hadoo2.jar:
/usr/local/hbase/lib/hbase-hadoop2-compat-0.98.9-
hadoop2.jar:/usr/local/hbase/lib/hbase-hadoop-compat-0.98.9-hadoop2.jar:
/usr/local/hbase/lib/hbase-client-0.98.9-
hadoop2.jar:/usr/local/hbase/lib/hbase-common-0.98.9-hadoop2.jar:
/usr/local/hbase/lib/htrace-core-2.04.jar:/usr/local/hbase/lib/hbase-common-
0.98.9-hadoop2-tests.jar:
/usr/local/hbase/lib/hbase-server-0.98.9-hadoop2-
tests.jar:/usr/local/hive/lib/zookeeper-3.4.6.jar:/usr/local/hive/lib/guava-
14.0.1.jar
스파크 셸에서 :
val sqlContext=new org.apache.spark.sql.hive.HiveContext(sc)
sqlContext.sql(“select count(*) from test.sample”).collect()
스택 추적 :
SQL 컨텍스트를 sqlContext로서 스택 가능.
scala> sqlContext.sql("select count(*) from test.sample").collect()
16/09/02 04:49:28 INFO parse.ParseDriver: Parsing command: select count(*) from test.sample
16/09/02 04:49:35 INFO parse.ParseDriver: Parse Completed
16/09/02 04:49:40 INFO metastore.HiveMetaStore: 0: get_table : db=test tbl=sample
16/09/02 04:49:40 INFO HiveMetaStore.audit: ugi=hdfs ip=unknown-ip-addr cmd=get_table : db=test tbl=sample
java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/util/Bytes
at org.apache.hadoop.hive.hbase.HBaseSerDe.parseColumnsMapping(HBaseSerDe.java:184)
at org.apache.hadoop.hive.hbase.HBaseSerDeParameters.<init>(HBaseSerDeParameters.java:73)
at org.apache.hadoop.hive.hbase.HBaseSerDe.initialize(HBaseSerDe.java:117)
at org.apache.hadoop.hive.serde2.AbstractSerDe.initialize(AbstractSerDe.java:53)
at org.apache.hadoop.hive.serde2.SerDeUtils.initializeSerDe(SerDeUtils.java:521)
at org.apache.hadoop.hive.metastore.MetaStoreUtils.getDeserializer(MetaStoreUtils.java:391)
at org.apache.hadoop.hive.ql.metadata.Table.getDeserializerFromMetaStore(Table.java:276)
at org.apache.hadoop.hive.ql.metadata.Table.getDeserializer(Table.java:258)
at org.apache.hadoop.hive.ql.metadata.Table.getCols(Table.java:605)
at org.apache.spark.sql.hive.client.ClientWrapper$$anonfun$getTableOption$1$$anonfun$3.apply(ClientWrapper.scala:331)
at org.apache.spark.sql.hive.client.ClientWrapper$$anonfun$getTableOption$1$$anonfun$3.apply(ClientWrapper.scala:326)
at scala.Option.map(Option.scala:145)
at org.apache.spark.sql.hive.client.ClientWrapper$$anonfun$getTableOption$1.apply(ClientWrapper.scala:326)
at org.apache.spark.sql.hive.client.ClientWrapper$$anonfun$getTableOption$1.apply(ClientWrapper.scala:321)
at org.apache.spark.sql.hive.client.ClientWrapper$$anonfun$withHiveState$1.apply(ClientWrapper.scala:279)
at org.apache.spark.sql.hive.client.ClientWrapper.liftedTree1$1(ClientWrapper.scala:226)
at org.apache.spark.sql.hive.client.ClientWrapper.retryLocked(ClientWrapper.scala:225)
at org.apache.spark.sql.hive.client.ClientWrapper.withHiveState(ClientWrapper.scala:268)
at org.apache.spark.sql.hive.client.ClientWrapper.getTableOption(ClientWrapper.scala:321)
at org.apache.spark.sql.hive.client.ClientInterface$class.getTable(ClientInterface.scala:122)
at org.apache.spark.sql.hive.client.ClientWrapper.getTable(ClientWrapper.scala:60)
at org.apache.spark.sql.hive.HiveMetastoreCatalog.lookupRelation(HiveMetastoreCatalog.scala:384)
at org.apache.spark.sql.hive.HiveContext$$anon$2.org$apache$spark$sql$catalyst$analysis$OverrideCatalog$$super$lookupRelation(HiveContext.scala:457)
at org.apache.spark.sql.catalyst.analysis.OverrideCatalog$class.lookupRelation(Catalog.scala:161)
at org.apache.spark.sql.hive.HiveContext$$anon$2.lookupRelation(HiveContext.scala:457)
at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$.getTable(Analyzer.scala:303)
나는 hadoop 2.6.0, 스파크 1.6.0, 하이브 1.2.1, hbase 0.98.9를 사용하고 있습니다.
hadoop-env.sh에서이 설정을 다음과 같이 추가했습니다.
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HBASE_HOME/lib/*
어떤 신체가 어떤 해결책을 제안 할 수 있습니까?
해결법
-
==============================
1.
java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/util/Bytes
hbase 관련 jar가 classpath에 없기 때문에
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH: `hbase classpath`
모든 hbase 관련 jar 파일을 포함해야합니다. 그렇지 않으면 여기에 --jars를 사용하여 나의 대답을 보아라.
참고 : 클래스 경로를 확인하려면 드라이버에서 코드 아래에 추가하여 모든 클래스 경로 리소스를 인쇄 할 수 있습니다
스케일 버전 :
val cl = ClassLoader.getSystemClassLoader cl.asInstanceOf[java.net.URLClassLoader].getURLs.foreach(println)
자바 :
import java.net.URL; import java.net.URLClassLoader; ... ClassLoader cl = ClassLoader.getSystemClassLoader(); URL[] urls = ((URLClassLoader)cl).getURLs(); for(URL url: urls) { System.out.println(url.getFile()); }
-
==============================
2.나는 그것을 작동하게했다. 아래 항아리를 사용해야합니다.
나는 그것을 작동하게했다. 아래 항아리를 사용해야합니다.
spark-shell - 마스터 실 클라이언트 --executor-core 10 --executor-memory 20G --num-executor 15 --driver-memory 2G - 드라이버 클래스 경로 / usr / hdp / current / hbase-client /lib/hbase-common.jar:/usr/hdp/current/hbase-client/lib/hbase-client.jar:/usr/hdp/current/hbase-client/lib/hbase-server.jar:/usr/ hdp / current / hbase-client / lib / hbase-protocol.jar : /usr/hdp/current/hbase-client/lib/guava-12.0.1.jar : / usr / hdp / htrace-core-3.1.0-incubating.jar --jars /usr/hdp/current/hbase-client/lib/hbase-client.jar,/usr/hdp/current/hbase-client/lib/hbase-common. / usr / hdp / current / hbase-client / lib / guava-12.0.1.jar, / usr / hdp / current / hbase-client / / usr / hdp / current / hbase-client / lib / htrace-core-3.1.0-incubating.jar, / usr / hdp / current / 하이브 클라이언트 / lib / 하이브 -hbase-handler.jar --files /etc/spark/conf/hbase-site.xml
from https://stackoverflow.com/questions/39285262/sparksqlhivehbasehbaseintegration-doesnt-work by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hadoop : 한 쌍의 값을 '키'로 사용할 수 있습니까? (0) | 2019.07.31 |
---|---|
[HADOOP] 잭슨 문제가있는 Hadoop Java MapReduce 구문 분석 JSON (0) | 2019.07.31 |
[HADOOP] HDFS에서 파일을 업데이트하는 방법 (0) | 2019.07.31 |
[HADOOP] 다른 파일의 한 파일에서 단어를 검색하는 Hadoop (0) | 2019.07.31 |
[HADOOP] Apache Spark - spark의 내부 작업 스케줄러는 사용자 란 무엇이며 풀은 무엇인지 정의합니다 (0) | 2019.07.31 |