これは初心者から来ているので...
HadoopとHiveがセットアップされているため、AWSクラスターのデータにアクセスするコンピューターでHiveクエリを実行できます。 MS SQL Serverで行ったように、コンピューターに保存された.csvデータを使用してHiveクエリを実行できますか?
その後、どのように.csvデータをHiveにロードしますか? Hadoopとどのような関係があり、どのモードを実行する必要がありますか?
何か間違ったことをした場合、以前に設定したものを損なうことなくいつでも戻ってAmazonでクエリを実行できるように、どのような設定に注意する必要がありますか?
次の簡単な手順を実行してみましょう。
手順:
最初に、csvファイルのフィールド名を使用してHiveにテーブルを作成します。たとえば、csvファイルに3つのフィールド(id、name、salary)が含まれており、「staff」というテーブルをHiveに作成するとします。以下のコードを使用して、Hiveでテーブルを作成します。
Hive> CREATE TABLE Staff (id int, name string, salary double) row format delimited fields terminated by ',';
次に、テーブルがHiveで作成されたので、csvファイルのデータをHiveの「スタッフ」テーブルにロードしましょう。
Hive> LOAD DATA LOCAL INPATH '/home/yourcsvfile.csv' OVERWRITE INTO TABLE Staff;
最後に、Hiveの「スタッフ」テーブルの内容を表示して、データが正常にロードされたかどうかを確認します
Hive> SELECT * FROM Staff;
ありがとう。
hiveがセットアップされている場合は、hdfs/s3のHive loadコマンドを使用してローカルデータセットを直接配置できます。
ロードコマンドを記述するときは、「Local」キーワードを使用する必要があります。
Hiveloadコマンドの構文
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
詳細については、以下のリンクを参照してください。 https://cwiki.Apache.org/confluence/display/Hive/LanguageManual%20DML#LanguageManualDML-Loadingfilesintotables
これを可能にする別の方法があります。
hadoop hdfs -copyFromLocalを使用して、.csvデータファイルをローカルコンピューターからHDFSのどこかにコピーします。たとえば、「/ path/filename」
hiveコンソールに入り、次のスクリプトを実行してファイルからロードし、Hiveテーブルとして作成します。 「\ 054」は、フィールド区切り文字を表す8進数の「カンマ」のASCIIコードです。
CREATE EXTERNAL TABLE table name (foo INT, bar STRING)
COMMENT 'from csv file'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054'
STORED AS TEXTFILE
LOCATION '/path/filename';
CSVファイルの場合、データは以下の形式になります
"column1", "column2","column3","column4"
そして、「、」で終了するフィールドを使用する場合、各列は以下のような値を取得します。
"column1" "column2" "column3" "column4"
また、列値のいずれかに値としてcomma
がある場合、まったく機能しません。
したがって、テーブルを作成する正しい方法は、OpenCSVSerdeを使用することです。
create table tableName (column1 datatype, column2 datatype , column3 datatype , column4 datatype)
ROW FORMAT SERDE
'org.Apache.hadoop.Hive.serde2.OpenCSVSerde'
STORED AS TEXTFILE ;
これを試してみてください。ファイルの生成方法に関するいくつかの例を次に示します。ツール- https://sourceforge.net/projects/csvtohive/?source=directory
参照を使用してCSVファイルを選択し、hadoopルートディレクトリを設定します(例:/ user/bigdataproject /)
ツールはすべての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
生成された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;
ありがとうビジェイ
次の場合にのみ、ローカルCSVファイルをHiveにロードできます。
Hive
またはbeeline
を使用してアップロードしました。