我在多个文件(存储在存储桶中)中有一个大型csv数据集(> 5TB),我需要将其导入Google Bigtable。文件格式为:
rowkey,S1,S2,S3,S4
文字,INT,INT,INT,INT
...
有一个带有hbase的importtsv函数是完美的但是在Windows中使用Google hbase shell时似乎没有这个功能。可以使用这个工具吗?如果没有,实现这一目标的最快方法是什么?我对hbase和Google Cloud几乎没有经验,所以一个简单的例子会很棒。我已经看到了一些使用DataFlow的类似示例,但除非必要,否则不愿意学习如何执行此操作。
由于
答案 0 :(得分:7)
将此大型内容导入Cloud Bigtable的理想方法是将您的TSV放在Google Cloud Storage上。
gsutil mb <your-bucket-name>
gsutil -m cp -r <source dir> gs://<your-bucket-name>/
然后使用Cloud Dataflow。
使用HBase shell创建表格,列族和输出列。
编写一个小的Dataflow作业来读取所有文件,然后创建一个键,然后写入表。 (请参阅此example开始。)
更简单的方法是:(注意 - 未经测试)
ssh
到群集主服务器 - wordcount-mapreduce示例中的脚本将接受./cluster ssh
使用HBase TSV importer启动Map Reduce作业。
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=a,b,c <tablename> gs://<your-bucket-name>/<dir>/**
答案 1 :(得分:0)
我创建了bug on the Cloud Bigtable Client project来实现执行importtsv
的方法。
即使我们可以让importtsv
工作,在自己的计算机上设置Bigtable也可能需要一些工作。导入一个这么大的文件对于一台机器来说有点牵扯,因此通常需要一个分布式作业(Hadoop或Dataflow),因此我不确定从你的机器运行作业的效果如何。