5 つの固定幅列を持つ固定幅ファイルがあります。これがファイルの構造です。{col1:3char, col2:35char, col3:3char, col4:11char, col5:4char}
. サンプルファイルはこちら
111 SagarKhatavkar 030 9999ABIT
112 VishalKataria 028 9999ABIT
113 GauravSomvanshi 032 9999ABIT
114 SonalKartekiya 029 9999ABIT
したがって、他の投稿で提案されているように、私は正規表現を使用しています。これが私が作成したDDLです。
CREATE TABLE emp (emplid STRING, name STRING, age String, salary String, dept STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "(.{4})(.{35})(.{3})(.{11})(.{4})",
"output.format.string" = "%1$s %2$s %3$s %4$s %5$s"
)
load from local を使用してこのテーブルのデータをロードすると、すべての値が NULL になります。
load data local inpath '/home/test1/emp.txt' into table emp;
Running select on the table
hive> select * from emp;
OK
NULL NULL NULL NULL NULL
NULL NULL NULL NULL NULL
NULL NULL NULL NULL NULL
NULL NULL NULL NULL NULL
Time taken: 0.959 seconds, Fetched: 4 row(s)
DDL の何が問題なのか教えてください。2.4.2.0-258 バージョンの Hive を使用しています。