Spark 访问 Row 对象值

Spark access Row object value

我想按分区迭代数据帧,并为每个分区迭代其所有行并创建一个 deleteList ,其中将包含 HBase 的每一行的删除对象。 我将 Spark 和 HBase 与 Java 一起使用,并使用以下代码创建了一个 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”。

很难从你的 post 中分辨出 class 到底是 Row,但我怀疑它是 org.apache.spark.sql.Row ?

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

同样,根据您配置 Hbase 访问的方式,我怀疑在您的情况下,0 索引将是物理 HBase table 的行键的值,后续索引将是与您的行一起返回的相应列值。但同样,这将取决于您在代码中到达这一点的准确程度。

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