Dataproc spark 作业无法从 bigtable 扫描记录

Posted

技术标签:

【中文标题】Dataproc spark 作业无法从 bigtable 扫描记录【英文标题】:Dataproc spark job not able to scan records from bigtable 【发布时间】:2018-03-02 09:25:45 【问题描述】:

我们正在使用 newAPIHadoopRDD 扫描一个 bigtable 并将记录添加到 Rdd 中。 Rdd 使用 newAPIHadoopRDD 填充较小的(比如少于 10 万条记录)大表。但是,它无法从更大(比如 6M 记录)的 bigtable 将记录加载到 Rdd。

SparkConf sparkConf = new SparkConf().setAppName("mc-bigtable-sample-scan")
JavaSparkContext jsc = new JavaSparkContext(sparkConf);

Configuration hbaseConf = HBaseConfiguration.create();
hbaseConf.set(TableInputFormat.INPUT_TABLE, "listings");
Scan scan = new Scan();
scan.addColumn(COLUMN_FAMILY_BASE, COLUMN_COL1);
hbaseConf.set(TableInputFormat.SCAN, TableMapReduceUtil.convertScanToString(scan));
JavaPairRDD<ImmutableBytesWritable, Result> source = jsc.newAPIHadoopRDD(hbaseConf, TableInputFormat.class,
            ImmutableBytesWritable.class, Result.class);
System.out.println("source count " + source.count());

对于较小的表,计数正确显示。但对于较大的表格,它显示为零。

尝试了许多不同的配置选项,例如增加驱动程序内存、执行程序数量、工作人员数量,但没有任何效果。

有人可以帮忙吗?

【问题讨论】:

请附上minimal, verifyable and complete example,以便更轻松地为您提供帮助。没有人知道您的表格的外观或其中包含哪些数据,因此很难找到合适的答案。 【参考方案1】:

我的错。在我的代码中发现了问题。我试图扫描的列 COLUMN_COL1 在更大的 bigtable 中不可用,因此我的计数显示为 0。

【讨论】:

以上是关于Dataproc spark 作业无法从 bigtable 扫描记录的主要内容,如果未能解决你的问题,请参考以下文章

在 google-dataproc 的 Spark 集群中的 pyspark 作业中使用外部库

火花提交时未读取 Dataproc 参数

Dataproc 上的 PySpark 因 SocketTimeoutException 而停止

Dataproc 集群最多可并行运行 5 个作业,忽略可用资源

为啥 dataproc 不能识别参数:spark.submit.deployMode=cluster?

如何提交依赖于 google dataproc 集群的 pyspark 作业