[HADOOP] 하이브 테이블에서 JSON-SerDe 사용하기
HADOOP하이브 테이블에서 JSON-SerDe 사용하기
아래 링크에서 JSON-SerDe를 시도하고있다. http://code.google.com/p/hive-json-serde/wiki/GettingStarted.
CREATE TABLE my_table (field1 string, field2 int,
field3 string, field4 double)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.JsonSerde' ;
Json-SerDe jar를 다음과 같이 추가했습니다.
ADD JAR /path-to/hive-json-serde.jar;
그리고 데이터로드 :
LOAD DATA LOCAL INPATH '/home/hduser/pradi/Test.json' INTO TABLE my_table;
데이터를 성공적으로로드합니다.
그러나 쿼리 데이터가
my_table에서 * 선택하십시오.
나는 테이블에서 단 하나의 행을 얻는다.
데이터 1 100 추가 데이터 1 123.001
Test.json에 포함됨
{"field1":"data1","field2":100,"field3":"more data1","field4":123.001}
{"field1":"data2","field2":200,"field3":"more data2","field4":123.002}
{"field1":"data3","field2":300,"field3":"more data3","field4":123.003}
{"field1":"data4","field2":400,"field3":"more data4","field4":123.004}
문제가 어디에 있습니까? 왜 내가 테이블을 쿼리 할 때 단 한 행이 4 행 대신오고있다. 그리고 / user / hive / warehouse / my_table에는 4 줄이 모두 들어 있습니다 !!
hive> add jar /home/hduser/pradeep/hive-json-serde-0.2.jar;
Added /home/hduser/pradeep/hive-json-serde-0.2.jar to class path
Added resource: /home/hduser/pradeep/hive-json-serde-0.2.jar
hive> CREATE EXTERNAL TABLE my_table (field1 string, field2 int,
> field3 string, field4 double)
> ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.JsonSerde'
> WITH SERDEPROPERTIES (
> "field1"="$.field1",
> "field2"="$.field2",
> "field3"="$.field3",
> "field4"="$.field4"
> );
OK
Time taken: 0.088 seconds
hive> LOAD DATA LOCAL INPATH '/home/hduser/pradi/test.json' INTO TABLE my_table;
Copying data from file:/home/hduser/pradi/test.json
Copying file: file:/home/hduser/pradi/test.json
Loading data to table default.my_table
OK
Time taken: 0.426 seconds
hive> select * from my_table;
OK
data1 100 more data1 123.001
Time taken: 0.17 seconds
나는 이미 test.json 파일의 내용을 게시했다. 그래서 당신은 질의가 단 한 줄의 결과로 나타나는 것을 볼 수 있습니다.
data1 100 more data1 123.001
json 파일을 employee.json으로 변경했습니다.
{ "firstName": "Mike", "lastName": "Chepesky", "employeeNumber": 1840192 }
및 또한 테이블을 변경하면 그것은 테이블을 쿼리하면 null 값을 보여주는 변경된 테이블
hive> add jar /home/hduser/pradi/hive-json-serde-0.2.jar;
Added /home/hduser/pradi/hive-json-serde-0.2.jar to class path
Added resource: /home/hduser/pradi/hive-json-serde-0.2.jar
hive> create EXTERNAL table employees_json (firstName string, lastName string, employeeNumber int )
> ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.JsonSerde';
OK
Time taken: 0.297 seconds
hive> load data local inpath '/home/hduser/pradi/employees.json' into table employees_json;
Copying data from file:/home/hduser/pradi/employees.json
Copying file: file:/home/hduser/pradi/employees.json
Loading data to table default.employees_json
OK
Time taken: 0.293 seconds
hive>select * from employees_json;
OK
NULL NULL NULL
NULL NULL NULL
NULL NULL NULL
NULL NULL NULL
NULL NULL NULL
NULL NULL NULL
Time taken: 0.194 seconds
해결법
-
==============================
1.의심스러운 경우 로그없이 진행되는 상황을 알기가 약간 어렵습니다 (시작하기 참조). 잠깐 생각해보십시오. SERDEPROPERTIES와 (과) 함께 작동하면 시도해 볼 수 있습니까?
의심스러운 경우 로그없이 진행되는 상황을 알기가 약간 어렵습니다 (시작하기 참조). 잠깐 생각해보십시오. SERDEPROPERTIES와 (과) 함께 작동하면 시도해 볼 수 있습니까?
CREATE EXTERNAL TABLE my_table (field1 string, field2 int, field3 string, field4 double) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.JsonSerde' WITH SERDEPROPERTIES ( "field1"="$.field1", "field2"="$.field2", "field3"="$.field3", "field4"="$.field4" );
ThinkBigAnalytics에서 시도해 볼 수있는 포크도 있습니다.
업데이트 : Test.json의 입력이 잘못된 JSON이므로 레코드가 축소됩니다.
자세한 내용은 https://stackoverflow.com/a/11707993/396567 응답을 참조하십시오.
-
==============================
2.내 시험
내 시험
-
==============================
3.json 구문 분석 용 cwiki / confluence를 기반으로 우리는 몇 가지 단계를 따라야합니다.
json 구문 분석 용 cwiki / confluence를 기반으로 우리는 몇 가지 단계를 따라야합니다.
from https://stackoverflow.com/questions/14705858/using-json-serde-in-hive-tables by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] SQOOP에서 증분 가져 오기를 어떻게 자동화 할 수 있습니까? (0) | 2019.07.23 |
---|---|
[HADOOP] System에서 Hbase MapReduce로 텍스트 파일 읽기 (0) | 2019.07.23 |
[HADOOP] 하둡 가상 클러스터 vs 단일 시스템 (0) | 2019.07.23 |
[HADOOP] 어떻게 아파치 돼지를 사용하여 hadoop 클러스터에 파일을로드 할 수 있습니까? (0) | 2019.07.23 |
[HADOOP] apache hadoop 예제의 소스 코드는 어디에 있습니까? (0) | 2019.07.23 |