我想按分区迭代一个数据框,对于每个分区迭代它的所有行,并创建它们的deleteelist,其中将包含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">
很难说从你Row
到底是哪个类,但我怀疑它是org.apache.spark.sql.Row
吗?
如果是这种情况,尝试getString(i)
或类似的方法,其中i是您试图访问的行中列的索引。
同样,取决于您如何配置您的Hbase访问,我怀疑在您的情况下,0索引将是物理Hbase表的行键的值,随后的索引将是随行返回的各自的列值。但是,同样,这将取决于您如何准确地到达代码中的这一点。
您的Row
对象应该具有访问其他数据类型的方法,如getInt(i)
等。