如何将拆分的 HDFS 文件加载到 Oracle 数据库?
How to load split HDFS files to Oracle database?
我需要将数据从 HDFS 上的拆分文件加载到 Oracle 数据库。
[user@asdf 007]$ hadoop dfs -ls
hdfs://XXXXXX/split_files/test_folder/test_table_with_partitions/*
Found 18 items
drwxrwxrwx - bigsql hdfs 0 2017-07-24 01:00 hdfs://XXXXXX/split_files/test_folder/test_table_with_partitions/tm=2017-07-24/dept=1
drwxrwxrwx - bigsql hdfs 0 2017-07-24 01:00 hdfs://XXXXXX/split_files/test_folder/test_table_with_partitions/tm=2017-07-24/dept=2
drwxrwxrwx - bigsql hdfs 0 2017-07-24 01:00 hdfs://XXXXXX/split_files/test_folder/test_table_with_partitions/tm=2017-07-24/dept=3
drwxrwxrwx - bigsql hdfs 0 2017-07-24 01:00 hdfs://XXXXXX/split_files/test_folder/test_table_with_partitions/tm=2017-07-24/dept=4
drwxrwxrwx - bigsql hdfs 0 2017-07-24 01:00 hdfs://XXXXXX/split_files/test_folder/test_table_with_partitions/tm=2017-07-24/dept=5
.......
如果我打开任何文件夹中的文件
hdfs://XXXXXX/split_files/test_folder/test_table_with_partitions/tm=2017-07-24/dept=5
他们里面没有时间和部门信息。因此,当我使用 sqoop 时,该信息未加载到数据库 table.
如何将这些信息也加载到数据库中? sqoop 中是否有任何选项可以做到这一点?
根据给定的详细信息,您引用的 HDFS 文件似乎来自 Hive table。
要将分区配置单元 table 导出到 RDBMS,您必须使用 sqoop
的 --hcatalog-table
参数。下面给出了示例,其中 test1 配置单元 table 已分区并正在导出到 MySQL table test.test.
sqoop export --connect jdbc:mysql://10.0.0.35:3306/test --username root --table test1 --hcatalog-table test1
要导出到 Oracle 数据库,您必须将 jdbc:mysql://10.0.0.35:3306/test
替换为 jdbc:oracle:thin:@<hostname>:<port>:<service>
我需要将数据从 HDFS 上的拆分文件加载到 Oracle 数据库。
[user@asdf 007]$ hadoop dfs -ls
hdfs://XXXXXX/split_files/test_folder/test_table_with_partitions/*
Found 18 items
drwxrwxrwx - bigsql hdfs 0 2017-07-24 01:00 hdfs://XXXXXX/split_files/test_folder/test_table_with_partitions/tm=2017-07-24/dept=1
drwxrwxrwx - bigsql hdfs 0 2017-07-24 01:00 hdfs://XXXXXX/split_files/test_folder/test_table_with_partitions/tm=2017-07-24/dept=2
drwxrwxrwx - bigsql hdfs 0 2017-07-24 01:00 hdfs://XXXXXX/split_files/test_folder/test_table_with_partitions/tm=2017-07-24/dept=3
drwxrwxrwx - bigsql hdfs 0 2017-07-24 01:00 hdfs://XXXXXX/split_files/test_folder/test_table_with_partitions/tm=2017-07-24/dept=4
drwxrwxrwx - bigsql hdfs 0 2017-07-24 01:00 hdfs://XXXXXX/split_files/test_folder/test_table_with_partitions/tm=2017-07-24/dept=5
.......
如果我打开任何文件夹中的文件
hdfs://XXXXXX/split_files/test_folder/test_table_with_partitions/tm=2017-07-24/dept=5
他们里面没有时间和部门信息。因此,当我使用 sqoop 时,该信息未加载到数据库 table.
如何将这些信息也加载到数据库中? sqoop 中是否有任何选项可以做到这一点?
根据给定的详细信息,您引用的 HDFS 文件似乎来自 Hive table。
要将分区配置单元 table 导出到 RDBMS,您必须使用 sqoop
的 --hcatalog-table
参数。下面给出了示例,其中 test1 配置单元 table 已分区并正在导出到 MySQL table test.test.
sqoop export --connect jdbc:mysql://10.0.0.35:3306/test --username root --table test1 --hcatalog-table test1
要导出到 Oracle 数据库,您必须将 jdbc:mysql://10.0.0.35:3306/test
替换为 jdbc:oracle:thin:@<hostname>:<port>:<service>