繁体   English   中英

如何根据列值过滤H2OFrame(标量)中的行?

[英]How to filter rows in H2OFrame (scala) based on a column value?

我正在从CSV文件读取H2OFrame

val h2oFrame = new H2OFrame(new File(inputCsvFilePath))

如何执行等效的.filter()操作(可用于Spark DataFrameRDD )。 例如,如何获得新的H2OFrame ,其中“标签”(这是列名) >1

我尝试了如下转换为org.apache.spark.sql.DataFrame (简化示例):

val df = asDataFrame(h2oFrame)
val dff = df.filter(s"label > 1")
print(dff.toString(0,15))

但这似乎抛出OutOfMemoryError如下所示:

异常:UncaughtExceptionHandler在线程“ Executor任务启动worker-2”中引发了java.lang.OutOfMemoryError

我建议您按原样进行操作-通过Spark。 常见问题解答

如何使用苏打水过滤H2OFrame?

过滤列很容易:只需删除不需要的列或从要包括的列中创建一个新的> H2OFrame(Frame(String []名称,Vec [] vec)),然后对其进行H2OFrame包装(新的H2OFrame(frame ))。

过滤行比较困难。 有两种方法:

为输入/输出样本创建一个附加的1/0二进制矢量(请确保在计算中考虑该附加矢量)。 该解决方案非常便宜,因为您无需复制数据-只需在数据遍历中创建一个简单的向量即可。

要么

使用过滤的行创建一个新框架。 这是一项艰巨的任务,因为您必须复制数据。 作为参考,请查看对Frame(H2OFrame)的#deepSlice调用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM