Динамическое создание ключа раздела с помощью команды Sqoop из MySQL в Hive

Я хочу создать таблицу Hive, импортировав данные из MySQL. Следующая команда может создать таблицу:

sqoop import \
-D mapred.job.name=name \
-Dorg.apache.sqoop.splitter.allow_text_splitter=true \
-connect "connection_detail" \
-username "username" \
-password "pwd" \
-query "SELECT * FROM schema.tablename WHERE  \$CONDITIONS " \
-null-string '' \
-null-non-string '' \
-fields-terminated-by ',' \
-m 1 \
-hive-overwrite \
--hive-import \
--hive-table tablename \
-map-column-hive z_column=bigint,y_column=int,x_column=int \
-delete-target-dir \
-target-dir  "path_dir"

Теперь я хочу создать столбцы динамического раздела в таблице - я попробовал следующую команду. Но это дает ошибку, упомянутую ниже -

sqoop import \
-D mapred.job.name=name \
-Dorg.apache.sqoop.splitter.allow_text_splitter=true \
-connect "connection_detail" \
-username "username" \
-password "pwd" \
-query "SELECT * FROM schema.tablename WHERE  \$CONDITIONS " \
-null-string '' \
-null-non-string '' \
-fields-terminated-by ',' \
-m 1 \
-hive-overwrite \
--hive-import \
--hive-table tablename \
-map-column-hive z_column=bigint,y_column=int,x_column=int \
--hive-partition-key a_column,b_column,c_column \
--hive-partition-value 'a_data','b_data','c_data' \
-delete-target-dir \
-target-dir  "path_dir"

FAILED: строка ParseException 1:367 не может распознать ввод рядом с ',' 'b_column' ',' в типе столбца

Где именно ошибка?


person TeeKay    schedule 01.10.2019    source источник
comment
Пожалуйста, обратитесь к этому - stackoverflow.com /вопросы/46263147/   -  person sangam.gavini    schedule 01.10.2019
comment
@sangam.gavini --create-hcatalog-table создает только метаданные. Как импортировать данные в таблицу?   -  person TeeKay    schedule 01.10.2019
comment
В соответствии с руководством пользователя sqoop я нашел информацию о том, что если указан параметр --hive-partition-key, то значение этого параметра используется в качестве ключа разделения для вновь созданной таблицы. С помощью этой опции можно указать только один ключ разделения, поэтому вы можете попробовать указать только один ключ разделения. И ошибка, которую вы получили, также указывает на столбец2 - b_column.   -  person sangam.gavini    schedule 01.10.2019
comment
Другой обходной путь, который вы можете сделать, это сначала получить данные в hdfs без каких-либо разделов и создать поверх него таблицу 1, а также создать таблицу 2 в соответствии с вашими требованиями к разделению и загрузить таблицу 1 из таблицы 2.   -  person sangam.gavini    schedule 01.10.2019
comment
@sangam.gavini есть какой-нибудь пример для этого? Благодарю.   -  person user1447718    schedule 14.08.2020