Bigtable CSV 导入

Bigtable CSV import

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

行键、s1、s2、s3、s4
文本、整数、整数、整数、整数
...

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

谢谢

我创建了一个 bug on the Cloud Bigtable Client project 来实现 importtsv 的方法。

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

将这么大的东西导入 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 创建 table、列族和输出列。

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

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

  • 将您的文件复制到 Google 云存储
  • 使用 Google Cloud Dataproc the 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>/**