我想按磁區迭代資料幀,并為每個磁區迭代其所有行并創建它們的 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”。
uj5u.com熱心網友回復:
從您的帖子中很難判斷到底是哪個班級Row,但我懷疑是org.apache.spark.sql.Row?
如果是這種情況,請嘗試類似getString(i)或類似的方法,其中 i 是您嘗試訪問的行中列的索引。
同樣,根據您配置 Hbase 訪問的方式,我懷疑在您的情況下,0 索引將是物理 HBase 表的行鍵的值,隨后的索引將是回傳的相應列值你的行。但同樣,這將取決于您在代碼中準確到達這一點的方式。
您的Row物件也應該具有訪問其他資料型別的方法,例如getInt(i)等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/311434.html
下一篇:Java中的Spark記錄鏈接
