java - 如何创建数据集的数组或集合spark-dataframes 类型的?
问题描述
我正在使用java过滤spark中的avro文件。对于不同类型的过滤条件,我得到不同的数据框,例如(等于,大于,小于),如下所示:
df1 = sourceDf.filter(sourceDf.col(fieldName).equalTo(value)),
df2 = sourceDf.filter(sourceDf.col(fieldName).gt(value)),
df3 = sourceDf.filter(sourceDf.col(fieldName).lt(value)) and so on....
现在,我想在一个集合或数组中收集所有数据帧(df1,df2,df3,...)`,而不是像上面那样单独的。请让我知道如何实现这一点,因为我是 java 和 apache-spark 的新手。
我试过 Dataset[] RecordCollection = new Dataset[3]; 但这是不允许的。
例外是:“无法创建数据集的通用数组”
解决方案
目前尚不清楚您要完成什么,因为您发布的示例如果合并则不会过滤任何内容。但你仍然可以这样做:
union
来自 API:
Dataset<Row> df = df1.union(df2).union(df3)
或从使用开始过滤器or
:
Column c1 = sourceDf.col(fieldName).equalTo(value);
Column c2 = sourceDf.col(fieldName).gt(value);
Column c3 = sourceDf.col(fieldName).lt(value);
df1 = sourceDf.filter(c1.or(c2).or(c3))
推荐阅读
- maven - 如何阻止maven下载源jar
- css - 每次组件重新渲染时如何生成一个随机数?
- angular - Angular Universal 中的 gzip
- acumatica - 无法更新案例中的原因下拉列表值
- sql - SQL Server 在不同类型的错误中停止执行的行为不同
- android - Jetpack Compose TextField InputFilter 仅具有货币正则表达式输入
- jquery - 在同一页面中单击按钮时使用 ajax 发送多个 Post 请求
- python - Python解码为阿拉伯语
- arduino - 使用modelsim的PULP平台
- list - 如何从列表中删除除重复项之外的所有内容?