我在1个数据库中有一个配置单元外部表,其中包含大约6,000亿条记录和100列。我需要将数据原样复制到其他数据库的同一表中。我正在尝试编写一个火花代码,但是它花了很多时间。有什么建议我将如何编写代码?我是新来的火花!
答案 0 :(得分:1)
请勿复制,请放在原处。在另一个数据库中创建外部表,其位置指向数据位置。
USE YOUR_DATABASE;
CREATE EXTERNAL TABLE abc ... LOCATION 'hdfs://your/data';
如果需要,请使用MSCK REPAIR TABLE abc;
或ALTER TABLE abc RECOVER PARTITIONS;
恢复分区,如果您使用的是EMR。
如果您绝对需要将数据复制到另一个位置(并且如果您在Amazon支付的EC2集群上,则需要为此花钱的原因),请使用distcp (distributed copy tool):
hadoop distcp hdfs://your/data hdfs://your/data2