3

I have a large csv dataset (>5TB) in multiple files (stored in a storage bucket) that I need to import into Google Bigtable. The files are in the format:

rowkey,s1,s2,s3,s4
text,int,int,int,int
...

There is an importtsv function with hbase that would be perfect but this does not seem to be available when using Google hbase shell in windows. Is it possible to use this tool? If not, what is the fastest way of achieving this? I have little experience with hbase and Google Cloud so a simple example would be great. I have seen some similar examples using DataFlow but would prefer not to learn how to do this unless necessary.

Thanks

4

2 回答 2

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 作业来读取所有文件,然后创建一个密钥,然后写入表。(请参阅此示例以开始使用。)

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

  • 将文件复制到 Google Cloud Storage
  • 使用Google Cloud Dataproc示例展示了如何创建集群和连接 Cloud Bigtable。
  • ssh到您的集群主机 - wordcount-mapreduce 示例中的脚本将接受./cluster ssh
  • 使用HBase TSV 导入器启动 Map Reduce 作业。

    hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=a,b,c <tablename> gs://<your-bucket-name>/<dir>/**

于 2015-12-06T03:47:08.967 回答
0

我在Cloud Bigtable Client 项目上创建了一个错误来实现一种方法importtsv

即使我们可以开始importtsv工作,在您自己的机器上设置 Bigtable 也可能需要一些工作。导入这么大的文件对于单台机器来说有点麻烦,所以通常需要分布式作业(Hadoop 或 Dataflow),所以我不确定从你的机器上运行该作业的效果如何。

于 2015-12-06T00:15:25.347 回答