2016-08-24 10 views
1

フラットなメインフレームファイルをインポートして、ハイブテーブルにロードしようとしています。 sqoop import-mainframeを使用してハイブテーブルにインポートして読み込むことができましたが、ファイル全体が1つのカラムに配置されていて、そのカラムにも名前がありません。sqoopを使用してハイブテーブル構造を定義する方法import-mainframe --create-hive-tableコマンド

sqoopインポートコマンド自体にテーブル構造を定義する可能性はありますか?

我々は、メインフレームからインポートし、テーブルをハイブに

sqoop import-mainframe --connect mainframe.com --dataset mainframedataset --username xxxxx -P --hive-import --create-hive-table --hive-table table1 --warehouse-dir /warehouse/

サンプル・メインフレームのデータをロードするには、以下のコマンドを使用している:

ASWIN | 1234 | 1000.00
XXXX | 1235 | 200.00
YYYY | 1236 | 150.00

ハイブテーブルがsqoopによって生成されたスクリプトの作成:デフォルトSqoop docs 1として

CREATE TABLE Employee (DEFAULT_COLUMN STRING) COMMENT 'Imported by sqoop on 2016/08/26 02:12:04' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' LINES TERMINATED BY '\012' STORED AS TEXTFILE

+0

は、 'mainframedataset'データセットのサンプルデータを共有します。それはどういう意味ですか**カラムには名前がありません**? –

+0

また、コマンドの最後に '--verbose'を入れてください(_はextended logs_を参照してください)。 CREATE TABLE文が表示されます。その声明も共有してください。 –

+0

お返事ありがとうございました!! YYYY 200.00
| | 1236 | 1234 | |私のメインフレームデータセットは、その中に以下のサンプルデータ

ASWINを持っ1000.00
XXXX | 1235私はsqoopコマンドを使用してHadoopのハイブの表に、この日付を移動する必要が150.00
をし、テーブルがEmployeesとしてテーブル名で定義され、カラムが(Name String、Empid int、Amount float)
のように定義されますが、今はsqoop -hive-importで--create-hive-tableは定義するオプションを提供しません列名にはそうする方法がありますか? – Aswin

答えて

0

を、データセット内の各レコードは、終了時に改行のテキストレコードとして格納されます。各レコードは、名前がDEFAULT_COLUMNの単一のテキストフィールドを含むものとします。 SqoopがHDFSにデータをインポートすると、作成したテキストファイルを再解析できるJavaクラスが生成されます。

あなたのpsvファイルはHDFSにロードされます。

table1ハイブテーブル)を作成し、自分自身使用して -

CREATE TABLE table1 (Name string, Empid int,Amount float) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' LINES TERMINATED BY '\012' STORED AS TEXTFILE

を今すぐ--create-hive-tableタグなしでごsqoop importコマンドを実行します。それは動作するはずです。

関連する問題