有人可以帮助我,如何在没有任何hadoop连接器的情况下大量快速导出到Hive到Vetica吗?
目前我通过unix Namedpipe导出相同的内容 但表现并不好。
几乎5个并行线程将数据加载到vertica中,时间约为230分钟,为16亿条记录集?
有人可以帮助我改善这种表现吗?如果我们可以优化这种出口吗?
由于 ABHI
答案 0 :(得分:4)
我们这样做,不使用命名管道(mkfifo),而是使用标准的匿名shell管道:
hive -e "select whatever FROM wherever" | \
dd bs=1M | \
/opt/vertica/bin/vsql -U $V_USERNAME -w $V_PASSWORD -h $HOST $DB -c \
"COPY schema.table FROM LOCAL STDIN DELIMITER E'\t' NULL 'NULL' DIRECT"
这对我们来说非常好。注意hive和vsql之间的'dd'。这是必须的,以使其正常工作。很难用这个给你很好的数字,因为我们的Hive select语句实际上并不简单,我不知道花费的时间在哪里(hive处理或数据加载)。
但是tbh,正如你所做的那样使用命名管道或者像我们一样使用未命名的管道是一种很好的方法,并且你可以在系统级别进行优化。但是,有几件事需要考虑: