복붙노트

[HADOOP] SparkSQL + Hive + Hbase + HbaseIntegration이 작동하지 않습니다.

HADOOP

SparkSQL + 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. ==============================

    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. ==============================

    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

  3. from https://stackoverflow.com/questions/39285262/sparksqlhivehbasehbaseintegration-doesnt-work by cc-by-sa and MIT license