私のテーブルには、私はコンパイル時に私はTwitterの分析ハイブクエリ
「エラーなどのエラーを取得し
LOAD DATA INPATH '/user/hue/twitter/tweets/2017/03/08/FlumeData.1489005910193' OVERWRITE INTO TABLE tweets PARTITION (datehour)
を使用して、この表にHDFSからデータをロードし、
CREATE EXTERNAL TABLE twitter.tweets (id BIGINT,created_at STRING,source STRING,favorited BOOLEAN, retweeted_status STRUCT<text:STRING,user:STRUCT<screen_name:STRING,name:STRING>,retweet_count:INT>,entities STRUCT<urls:ARRAY<STRUCT<expanded_url:STRING>>, user_mentions:ARRAY<STRUCT<screen_name:STRING,name:STRING>>, hashtags:ARRAY<STRUCT<text:STRING>>>,text STRING,user STRUCT<screen_name:STRING,name:STRING,friends_count:INT,followers_count:INT,statuses_count:INT,verified:BOOLEAN,utc_offset:INT,time_zone:STRING>,in_reply_to_screen_name STRING) PARTITIONED BY (datehour INT) ROW FORMAT SERDE 'com.cloudera.hive.serde.JSONSerDe' LOCATION '/twitter';
ですステートメント:FAILED:SemanticException org.apache.hadoop.hive.ql.metadata.HiveException:MetaException(メッセージ:無効 パーティションキー&値;キー[datehour、]、値[]「)
私は仕切り部の値として
ありがとうございました。あなたの答えを見た前に私はつぶやきをダウンロードした日付をPARTITION(datehour = 08032017)として追加しました。これはうまくいきました。 – User1
**(1)** 'datehour'日付と時刻だけを保持する列の奇妙な名前です。 **(2)**パーティション列がint型であるため、先行する '08032017'は意味がありません**(3)**パーティションの定義を別の型/形式に変更することを強くお勧めします。 「日付」は理想的である。 'PARTITIONED BY(datehour date)'と 'INTO TABLE tweets PARTITION(datehour = date '2017-03-08')'となります。何らかの理由で 'int'を使用していても、' YYYYMMDD'形式を使用してください。 '20170308'なので、' date_our between 20170301と20170308'のような比較を使うことができます。 –
私は理解しました。私はこの方法でやります。おかあさん – User1