HBase批量获取spark scala
HBase batch get with spark scala
我正在尝试根据行键列表从 HBase 获取数据,在 API 文档中有一个名为 get(List gets) 的方法,我正在尝试使用它,但是编译器正在抱怨这样的事情,有没有人有过这样的经历
overloaded method value get with alternatives: (x: java.util.List[org.apache.hadoop.hbase.client.Get])Array[org.apache.hadoop.hbase.client.Result] <and> (x: org.apache.hadoop.hbase.client.Get)org.apache.hadoop.hbase.client.Result cannot be applied to (List[org.apache.hadoop.hbase.client.Get])
我试过的代码。
val keys: List[String] = df.select("id").rdd.map(r => r.getString(0)).collect.toList
val gets:List[Get]=keys.map(x=> new Get(Bytes.toBytes(x)))
val results = hTable.get(gets)
您的获取类型为 List[Get]。这里的 List 是 Scala 类型。但是,HBase get 请求需要 Java 列表类型。您可以使用 Seq[Get] 而不是 List[Get],因为 Scala Seq 更接近于 Java List。
所以,你可以试试下面的代码:
val keys: List[String] = df.select("id").rdd.map(r => r.getString(0)).collect.toList
val gets:Seq[Get]=keys.map(x=> new Get(Bytes.toBytes(x)))
val results = hTable.get(gets)
我最终使用 JavaConvert 实现了它 java.util.List,然后成功了
val gets:List[Get]=keys.map(x=> new Get(Bytes.toBytes(x)))
import scala.collection.JavaConverters._
val getJ=gets.asJava
val results = hTable.get(getJ).toList
我正在尝试根据行键列表从 HBase 获取数据,在 API 文档中有一个名为 get(List gets) 的方法,我正在尝试使用它,但是编译器正在抱怨这样的事情,有没有人有过这样的经历
overloaded method value get with alternatives: (x: java.util.List[org.apache.hadoop.hbase.client.Get])Array[org.apache.hadoop.hbase.client.Result] <and> (x: org.apache.hadoop.hbase.client.Get)org.apache.hadoop.hbase.client.Result cannot be applied to (List[org.apache.hadoop.hbase.client.Get])
我试过的代码。
val keys: List[String] = df.select("id").rdd.map(r => r.getString(0)).collect.toList
val gets:List[Get]=keys.map(x=> new Get(Bytes.toBytes(x)))
val results = hTable.get(gets)
您的获取类型为 List[Get]。这里的 List 是 Scala 类型。但是,HBase get 请求需要 Java 列表类型。您可以使用 Seq[Get] 而不是 List[Get],因为 Scala Seq 更接近于 Java List。 所以,你可以试试下面的代码:
val keys: List[String] = df.select("id").rdd.map(r => r.getString(0)).collect.toList
val gets:Seq[Get]=keys.map(x=> new Get(Bytes.toBytes(x)))
val results = hTable.get(gets)
我最终使用 JavaConvert 实现了它 java.util.List,然后成功了
val gets:List[Get]=keys.map(x=> new Get(Bytes.toBytes(x)))
import scala.collection.JavaConverters._
val getJ=gets.asJava
val results = hTable.get(getJ).toList