【发布时间】:2016-09-14 08:43:58
【问题描述】:
我从一个有 5 亿行的 HBase 表 (PHOENIX) 创建了一个 DataFrame。我从 DataFrame 创建了一个 JavaBean 的 RDD,并使用它来连接文件中的数据。
Map<String, String> phoenixInfoMap = new HashMap<String, String>();
phoenixInfoMap.put("table", tableName);
phoenixInfoMap.put("zkUrl", zkURL);
DataFrame df = sqlContext.read().format("org.apache.phoenix.spark").options(phoenixInfoMap).load();
JavaRDD<Row> tableRows = df.toJavaRDD();
JavaPairRDD<String, AccountModel> dbData = tableRows.mapToPair(
new PairFunction<Row, String, String>()
{
@Override
public Tuple2<String, String> call(Row row) throws Exception
{
return new Tuple2<String, String>(row.getAs("ID"), row.getAs("NAME"));
}
});
现在我的问题 - 假设该文件有 2 百万个与表匹配的唯一条目。是整个表作为 RDD 加载到内存中,还是只有表中匹配的 200 万条记录作为 RDD 加载到内存中?
【问题讨论】:
-
嗨@Mohan,请告诉我
DataFrame df = sqlContext.read().format("org.apache.phoenix.spark").options(phoenixInfoMap).load()方法的构建依赖关系。我也在做同样的事情,但得到java.lang.NoSuchMethodError
标签: apache-spark dataframe phoenix