1

以下のようなJSONファイルがあり、解析された形式でHIVEテーブルにロードしたいのですが、可能なオプションは何ですか。

AVRO の場合は、AvroSerDe を直接使用できます。ただし、この場合のソース ファイルは JSON です。

{  
   "subscriberId":"vfd1234-07e1-4054-9b64-83a5a20744db",
   "cartId":"1234edswe-6a9c-493c-bcd0-7fb71995beef",
   "cartStatus":"default",
   "salesChannel":"XYZ",
   "accountId":"12345",
   "channelNumber":"12",
   "timestamp":"Dec 12, 2013 8:30:00 AM",
   "promotions":[  
      {  
         "promotionId":"NEWID1234",
         "promotionContent":{  
            "has_termsandconditions":[  
               "TC_NFLMAXDEFAULT16R103578"
            ],
            "sequenceNumber":"305",
            "quantity":"1",
            "promotionLevel":"basic",
            "promotionDuration":"1",
            "endDate":"1283142400000",
            "description":"Regular Season One Payment",
            "active":"true",
            "disableInOfferPanel":"true",
            "displayInCart":"true",
            "type":"promotion",
            "frequencyOfCharge":"weekly",
            "promotionId":"NEWID1234",
            "promotionIndicator":"No",
            "shoppingCartTitle":"Regular Season One Payment",
            "discountedPrice":"0",
            "preselectedInOfferPanel":"false",
            "price":"9.99",
            "name":"Regular Season One Payment",
            "have":[  
               "CatNFLSundayMax"
            ],
            "ID":"NEWID1234",
            "startDate":"1451365600000",
            "displayInOfferPanel":"true"
         }
      }
   ]
}

を使用してテーブルを作成しようとしましたorg.openx.data.jsonserde.JsonSerDeが、データが表示されません。

CREATE EXTERNAL TABLE test1
(
SUBSCRIBER_ID string,
CART_ID string,
CART_STAT_NAME string,
SLS_CHAN_NAME string,
ACCOUNT_ID string,
CHAN_NBR string,
TX_TMSTMP string,
PROMOTION ARRAY<STRING>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION '<HDFS location where the json file is place in single line>';
4

4 に答える 4

1

使用している については不明JsonSerDeです。ここでこれJsonSerDeを使用できます。Hive-JSON-Serde

hive> add jar /User/User1/json-serde-1.3.8-SNAPSHOT-jar-with-dependencies.jar;
Added [/User/User1/json-serde-1.3.8-SNAPSHOT-jar-with-dependencies.jar] to class path
Added resources: [/User/User1/json-serde-1.3.8-SNAPSHOT-jar-with-dependencies.jar]
hive> use default;
OK
Time taken: 0.021 seconds
hive> CREATE EXTERNAL TABLE IF NOT EXISTS json_poc (
> alertHistoryId bigint, entityId bigint, deviceId string, alertTypeId int,  AlertStartDate string
> )
> ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
> LOCATION '/User/User1/sandeep_poc/hive_json';
OK
Time taken: 0.077 seconds
hive> select * from json_poc;
OK
123456  123     123     1       jan 04, 2017 2:46:48 PM
Time taken: 0.052 seconds, Fetched: 1 row(s)

ジャーの作り方。 Maven を PC にインストールしてから、次のようなコマンドを実行する必要があります。

C:\Users\User1\Downloads\Hive-JSON-Serde-develop\Hive-JSON-Serde-develop>mvn -Phdp23 clean package.

-Phdp23 is hdp2.3 it should be replaced with your hadoop version.

または、組み込みJsonSerde の get_json_object json_tupleを使用する 場合、使用方法の例を探している場合は、このブログHive-JSON- Serde example を参照してください。

JSON ファイルも検証することをお勧めします。JSON バリデーター

于 2017-01-04T09:21:16.337 に答える