Hive表にデータをロードしようとしているときに、私に奇妙に見える動作が発生しました。私のデータは、 "json"という名前の単一の列を含むtwitter_testというテーブルにレコードとしてロードされたJSONオブジェクトで構成されています。Hiveで表を作成し、データを入力してください。
各JSONから3つのフィールドを抽出し、「my_twitter」という新しいテーブルを作成します。私はこのようにコマンドを発行します
CREATE TABLE my_twitter AS SELECT regexp_replace(get_json_object(t.json, '$.body\[0]'), '\n', '') as text, get_json_object(t.json, '$.publishingdate\[0]') as created_at, get_json_object(t.json, '$.author_screen_name\[0]') as author from twitter_test AS t;
結果は、データを含まない3つの列を持つ表です。ただし、SELECT
コマンドだけを実行すると、期待どおりにデータが返されます。
試行錯誤で、私は新しいテーブルにデータを挿入するためにクエリの最後にLIMIT x
を追加する必要があることを知りました。問題は、なぜですか? さらに、CREATE
が正しく機能するためには、x
の行が返されて、SELECT
という文が返されていることを事前に知っておく必要があるのは奇妙です。回避策はありますか?
感謝を使用してJSONのテーブルを作成するためのサンプルハイブDDLの下に検索。私はそれを確かに試してみましょう。しかし、問題はより一般的です。 'INSERT OVERWRITE TABLE my_twitter SELECTとして" this "を" created "として、" dummy "を作者として投稿twitter_test LIMIT 1;' 最後に 'LIMIT 1'を削除すると動作しません。 –