1

私のデータは次のようになります。

a||b||c

データをフェッチするには、私の create table ステートメントは次のとおりです。

テーブルを作成

( col1 STRING,

col2 文字列、

col3 STRING)

"||" で終了する行形式の区切りフィールド。

しかし、ここでは「|」を取っています 「||」ではなく区切り文字として。

誰でもこれについて私を助けることができますか?

4

1 に答える 1

2

複数文字の区切り文字列を扱う場合は、 RegexSerDeを使用できます。

create table mytable (
  col1 string,
  col2 string,
  col3 string
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "^([^\\|]+)\\|\\|([^\\|]+)\\|\\|([^\\|]+)$",
"output.format.string" = "%1$s %2$s %3$s")
STORED AS TEXTFILE
LOCATION '/path/to/data';

注:ニーズに合わせて正規表現を改良してください

于 2013-01-03T11:37:30.753 に答える