【问题标题】:Spark access Row object valueSpark 访问 Row 对象值
【发布时间】:2021-11-30 01:37:37
【问题描述】:

我想按分区迭代数据帧,并为每个分区迭代其所有行并创建它们的 deleteList,其中将包含 HBase 的每行删除对象。 我在 Java 中使用 Spark 和 HBase,并使用以下代码创建了一个 Row 对象:

df.foreachPartition((ForeachPartitionFunction<Row> iterator -> {
  while (iterator.hasNext()) {
    Row row = RowFactory.create(iterator.next());
    deleteList.add(new Delete(Bytes.toBytes(String.valueOf(row))));
  }
}

但它不起作用,因为我无法正确访问行的值。而 df 有一列名为“hbase_key”。

【问题讨论】:

  • 请显示更多您的代码。 iterator 是什么? hbase 表使用什么键?
  • 是的。看看我编辑了什么

标签: java apache-spark hbase


【解决方案1】:

很难从你的帖子中看出哪个类确切是Row,但我怀疑它是org.apache.spark.sql.Row

如果是这种情况,请尝试 getString(i) 或类似的方法,其中 i 是您尝试访问的行中的列的索引。

再次,根据您配置 Hbase 访问的方式,我怀疑在您的情况下,0 索引将是物理 HBase 表的行键的值,随后的索引将是相应的列值与您的行一起返回。但同样,这将取决于您在代码中究竟是如何到达这一点的。

您的Row 对象也应该具有访问其他数据类型的方法,例如getInt(i) 等。

【讨论】:

  • 是的,确实是org.apache.spark.sql.Row。那很有帮助。谢谢
猜你喜欢
  • 2018-04-27
  • 1970-01-01
  • 2021-03-08
  • 2016-03-24
  • 2016-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多