保存された sqoop ジョブ (インクリメンタル) を作成し、sqoop メタストアをリポジトリとして使用しようとしています。(セキュリティ上の理由から、「xyz」はジョブを実行している UNIX ユーザーであり、sample_table は参照用に使用されます)
sqoop job -Dhadoop.security.credential.provider.path=jceks://path/to/pwd \
--meta-connect "jdbc:hsqldb:file:/tmp/sqoop-meta.db;shutdown=true" \
--create sample_job --import -Dmapred.job.queue.name=realtime \
--connect jdbc:mysql://hostname/db?zeroDateTimeBehavior=convertToNull \
--driver com.mysql.jdbc.Driver \
--table SAMPLE_TABLE -m 1 \
--username tony \
--password-alias pwd \
--incremental lastmodified \
--check-column ts \
--last-value 2018-04-24 \
--target-dir /some/tmp/location/ \
--map-column-hive XYZ=tinyint \
--null-string '' \
--null-non-string ''
保存されたジョブの実行中にも使用されるローカル sqoop メタストアを使用します。
sqoop job --meta-connect "jdbc:hsqldb:file:/tmp/sqoop-meta.db;shutdown=true" -exec sample_job
Sqoop は正常に動作し、データが hdfs の場所にプルされることがわかります。ただし、最後にこのエラーが発生します。どこにも修正が見つからないようです。_sqoop ディレクトリに完全なアクセス許可を与えようとしましたが、それでも問題は同じです。
Logging initialized using configuration in jar:file:/usr/hdp/2.6.4.0-91/hive/lib/hive-common-1.2.1000.2.6.4.0-91.jar!/hive-log4j.properties
OK
Time taken: 3.028 seconds
FAILED: SemanticException Line 2:17 Invalid path ''hdfs://hostname/user/xyz/_sqoop/ad240610c282442cb65b61b14f582935_sample_table'': No files matching path hdfs://vBAPUAT01nn/user/xyz/_sqoop/ad240610c282442cb65b61b14f582935_sample_table
しかし、上記のファイルは _sqoop の場所にはありません。代わりに、sqoop 操作を実行するたびに、作成された別の名前の新しいファイルが表示されます。/スクープ/
$ hadoop fs -ls /user/pcjaapp/_sqoop/
drwxrwxrwx - xyz hdfs 0 2018-04-26 16:31 /user/xyz/_sqoop/1ab0f2de2ace4984b7b978af5f8f8336_sample_table
drwxr-xr-x - xyz hdfs 0 2018-04-27 10:50 /user/xyz/_sqoop/3aedb9fc0857433f8388ae2c70019d93_sample_table
drwxrwxrwx - xyz hdfs 0 2018-04-26 16:54 /user/xyz/_sqoop/6dfb90bcf7854f5e82efebbcd317cabe_sample_table
drwxrwxrwx - xyz hdfs 0 2018-04-26 15:29 /user/xyz/_sqoop/a59b80e855734c35b785bdc35dcbd5a6_sample_table
drwxrwxrwx - xyz hdfs 0 2018-04-26 14:30 /user/xyz/_sqoop/b77d4b88140e469daa5aa0962b56b562_sample_table
誰かがここで正確に何が起こっているのかに光を当てることができますか. メタストアを使用して sqoop 増分ジョブを起動しようとするのは初めてであるため、この分野ではかなり新しいものです。