24

私はハイブが初めてです。開発目的で単一ノードの Hadoop クラスターを正常にセットアップし、その上にハイブとピッグをインストールしました。

ハイブにダミーテーブルを作成しました:

create table foo (id int, name string);

ここで、このテーブルにデータを挿入したいと思います。一度に 1 レコードずつ SQL のようにデータを追加できますか? 類似のコマンドで私を親切に助けてください:

insert into foo (id, name) VALUES (12,"xyz);

また、次の形式のデータを含む csv ファイルがあります。

1,name1
2,name2
..
..

..


1000,name1000

このデータをダミーテーブルにロードするにはどうすればよいですか?

4

11 に答える 11

28

最善の方法は次のとおりだと思います:
a)データをHDFSにコピーします(まだ存在しない場合)
b)このようにCSVに外部テーブルを作成します

CREATE EXTERNAL TABLE TableName (id int, name string)
ROW FORMAT DELIMITED   
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION 'place in HDFS';

c) クエリを発行することで、既に TableName の使用を開始できます。
d) データを他の Hive テーブルに挿入する場合:

insert overwrite table finalTable select * from table name;
于 2013-03-04T09:51:18.347 に答える
8

ターミナルから一度に 1 つのレコードを挿入する直接的な方法はありませんが、何かをテストしたいときに通常使用する簡単で簡単な回避策を次に示します。

tそれが少なくとも1つのレコードを持つテーブルであると仮定します。列の種類や数は関係ありません。

INSERT INTO TABLE foo
SELECT '12', 'xyz'
FROM t
LIMIT 1;
于 2014-06-24T08:54:40.380 に答える
3

(12,"xyz) のようなアドホックな値を挿入するには、次のようにします。

insert into table foo select * from (select 12,"xyz")a;
于 2016-03-02T18:16:15.200 に答える
3

1 つのテキスト ファイルまたはログ ファイルに挿入したデータは、hdfs の 1 つのパスに置くことができ、ハイブで次のようにクエリを記述できます。

  hive>load data inpath<<specify inputpath>> into table <<tablename>>;

例:

hive>create table foo (id int, name string)
row format delimited
fields terminated by '\t' or '|'or ','
stored as text file;
table created..
    DATA INSERTION::
    hive>load data inpath '/home/hive/foodata.log' into table foo;
于 2014-10-20T08:16:05.903 に答える
1

csv ファイルからハイブ スクリプトを生成するツールを開発しました。以下は、ファイルの生成方法に関するいくつかの例です。ツール -- https://sourceforge.net/projects/csvtohive/?source=directory

  1. [参照] を使用して CSV ファイルを選択し、hadoop ルート ディレクトリを設定します。例: /user/bigdataproject/

  2. ツールは、すべての csv ファイルを使用して Hadoop スクリプトを生成します。以下は、csv を Hadoop に挿入するために生成された Hadoop スクリプトのサンプルです。

    #!/bin/bash -v
    hadoop fs -put ./AllstarFull.csv /user/bigdataproject/AllstarFull.csv hive -f ./AllstarFull.hive

    hadoop fs -put ./Appearances.csv /user/bigdataproject/Appearances.csv hive -f ./Appearances.hive

    hadoop fs -put ./AwardsManagers.csv /user/bigdataproject/AwardsManagers.csv hive -f ./AwardsManagers.hive

  3. 生成された Hive スクリプトのサンプル

    CREATE DATABASE IF NOT EXISTS lahman;
    USE lahman;
    CREATE TABLE AllstarFull (playerID string,yearID string,gameNum string,gameID string,teamID string,lgID string,GP string,startingPos string) row format delimited fields terminated by ',' stored as textfile;
    LOAD DATA INPATH '/user/bigdataproject/AllstarFull.csv' OVERWRITE INTO TABLE AllstarFull;
    SELECT * FROM AllstarFull;

ありがとうビジェイ

于 2015-07-13T18:38:05.810 に答える
0

Hadoopファイルシステムは、既存のファイルへのデータの追加をサポートしていません。ただし、CSVファイルをHDFSにロードして、Hiveに外部テーブルとして扱うように指示することはできます。

于 2012-06-15T19:24:12.883 に答える
0

これを使って -

create table dummy_table_name as select * from source_table_name;

これにより、 で利用可能な既存のデータを使用して新しいテーブルが作成されsource_table_nameます。

于 2016-06-09T11:26:10.943 に答える