Bigtable CSV导入

时间:2015-12-05 11:39:57

标签: csv bigtable google-cloud-bigtable

我在多个文件(存储在存储桶中)中有一个大型csv数据集(> 5TB),我需要将其导入Google Bigtable。文件格式为:

rowkey,S1,S2,S3,S4
文字,INT,INT,INT,INT
...

有一个带有hbase的importtsv函数是完美的但是在Windows中使用Google hbase shell时似乎没有这个功能。可以使用这个工具吗?如果没有,实现这一目标的最快方法是什么?我对hbase和Google Cloud几乎没有经验,所以一个简单的例子会很棒。我已经看到了一些使用DataFlow的类似示例,但除非必要,否则不愿意学习如何执行此操作。

由于

2 个答案:

答案 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

  1. 使用HBase shell创建表格,列族和输出列。

  2. 编写一个小的Dataflow作业来读取所有文件,然后创建一个键,然后写入表。 (请参阅此example开始。)

  3. 更简单的方法是:(注意 - 未经测试)

    • 将文件复制到Google云端存储
    • 使用Google Cloud Dataproc example显示了如何创建群集和连接Cloud Bigtable。
    • 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),因此我不确定从你的机器运行作业的效果如何。