2016-10-21 6 views
0

POM 의존성 사용하여 행과 필드 구분 기호를 얻는 방법 : I는 열, 파티션 열, 입력 파일 포맷을 얻을 수 있어요HCatalog 자바 API를

<dependency> 
     <groupId>org.apache.hive.hcatalog</groupId> 
     <artifactId>hive-webhcat-java-client</artifactId> 
     <version>1.2.1</version> 
    </dependency> 

유용한 코드 :

HiveConf hcatConf = new HiveConf(); 

    hcatConf.setVar(HiveConf.ConfVars.METASTOREURIS, connectionUri); 
    hcatConf.set("hive.metastore.local", "false"); 
    hcatConf.setIntVar(HiveConf.ConfVars.METASTORETHRIFTCONNECTIONRETRIES, THRIFT_CONNECTION_RETRY); 
    hcatConf.set(HiveConf.ConfVars.HIVE_SUPPORT_CONCURRENCY.varname, "true"); 
    hcatConf.set(HiveConf.ConfVars.SEMANTIC_ANALYZER_HOOK.varname, HCatSemanticAnalyzer.class.getName()); 
    hcatConf.set(HiveConf.ConfVars.PREEXECHOOKS.varname, ""); 
    hcatConf.set(HiveConf.ConfVars.POSTEXECHOOKS.varname, ""); 

    hcatConf.setTimeVar(HiveConf.ConfVars.METASTORE_CLIENT_SOCKET_TIMEOUT, TIME_OUT, TimeUnit.MILLISECONDS); 

    HCatClient client = null; 
    HCatTable hTable = null; 

    try { 
     client = HCatClient.create(hcatConf); 
     hTable = client.getTable(databaseName, tableName); 
     System.out.println(hTable.getInputFileFormat()); 
     System.out.println(hTable.getOutputFileFormat()); 
     System.out.println(hTable.getSerdeLib()); 

    } catch (HCatException hCatEx) { 
     LOG.error("Not able to connect to hive. Caused By;", hCatEx); 
    } 

텍스트 테이블의 행 및 필드 구분 기호를 가져 오는 방법은 무엇입니까? getSerdeParams()의 자바 독으로 당

,

public Map<String,String> getSerdeParams()
는 - 등등 필드 구분 기호와 같은 파라미터를 돌려줍니다.

하지만

내 경우에는 내가 테이블 작성하는 경우이지도

{serialization.format=1} 

답변

0

만 1 항목을 얻고있다 :

CREATE TABLE `tbl1`(
    `c1` int) 
ROW FORMAT SERDE 
    'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
STORED AS INPUTFORMAT 
    'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' 
LOCATION 
    'hdfs://localhost:8020/apps/hive/warehouse/dev.db/tbl1' 
TBLPROPERTIES (
    'transient_lastDdlTime'='1477067078') 
:

create table tbl1 (c1 int) stored as textfile 

을 그리고 show create table tbl1을 실행할 때

기본 구분 없음 rs가 표시됩니다.

나는 구분 기호 테이블 만들 때 :

create table tbl2 (c1 int) ROW FORMAT DELIMITED FIELDS TERMINATED BY "\," LINES TERMINATED BY "\n" stored as textfile; 

을 내가 show create table tbl2를 실행하면

CREATE TABLE `tbl2`(
    `c1` int) 
ROW FORMAT DELIMITED 
    FIELDS TERMINATED BY ',' 
    LINES TERMINATED BY '\n' 
STORED AS INPUTFORMAT 
    'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
    'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' 
LOCATION 
    'hdfs://localhost:8020/apps/hive/warehouse/dev.db/tbl2' 
TBLPROPERTIES (
    'transient_lastDdlTime'='1477067160') 

이 두번째 경우에는 내가 명시 적으로 구분 기호를 언급했다. 따라서 getSerdeParams()은 원하는 값을 반환했습니다.