Spark访问行对象值



我想按分区迭代一个数据框,对于每个分区迭代它的所有行,并创建它们的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)等。

最新更新