我用scala在spark中创建了一个二维立方体。数据来自两个不同的数据帧。名称是“borrowersTable”和“loansTable”。它们是使用“createOrReplaceTempView”选项创建的,这样就可以对它们运行sql查询。目标是在两个维度(性别和部门)上创建多维数据集,汇总图书馆的图书借阅总数。使用命令
val cube=spark.sql("""
select
borrowersTable.department,borrowersTable.gender,count(loansTable.bibno)
from borrowersTable,loansTable
where borrowersTable.bid=loansTable.bid
group by borrowersTable.gender,borrowersTable.department with cube;
""")
我创建了具有以下结果的立方体:
然后使用命令
<代码>立方体。写格式(“csv”)。保存(“file:///....../data/cube“”
Spark创建了一个名为cube的文件夹,其中包含34个名为part*. csv的文件,其中包括部门、性别和贷款总和(每组)的列。
这里的目标是创建以前两列(属性)的名称命名的文件:对于GroupBy(Attr1,Attr2),文件应命名为Attr1\u Attr2。
e、 g.对于(Economics,M)文件应命名为Economics\u M。对于(Mathematics,null)文件应命名为Mathematics\u null,依此类推。任何帮助都将不胜感激。
当您调用df.write.format("...").保存("...")
时,每个Spark执行程序都会将它保存的分区保存到相应的part*文件中。这是存储和加载大文件的机制,您无法更改它。但是,您可以尝试以下替代方案,无论在您的情况下效果更好:
cube
.write
.partitionBy("department", "gender")
.format("csv")
.save("file:///....../data/cube")
这将创建名称为department=Physics/gender=M的子文件夹,其中仍包含part*文件。此结构稍后可以加载回Spark,并用于分区列的有效连接。
val csvRows = cube
.collect()
.foreach {
case Row(department: String, gender: String, _) =>
// just the simple way to write CSV, you can use any CSV lib here as well
Files.write(Paths.get(s"$department_$gender.csv"), s"$department,$gender".getBytes(StandardCharsets.UTF_8))
}
如果您调用collect()您将在驱动程序端以数组的形式接收数据帧,然后您可以对其执行任何操作。这种方法的一个重要限制是,您的数据帧应该适合驾驶员的内存。
问题内容: 我正在尝试用其他常量定义常量,但似乎无法完成,因为当所需常量依赖于它时,初始常量尚未准备就绪。我想确定这是否完全不可能。 目前,我有这样的常量: 后两个常数是我想要完成的 问题答案: 定义控制器,服务和其他控制器之间的依赖关系的角度方法是通过依赖关系注入(DI)。因此,如果您有一个依赖于服务B的控制器A,则必须像这样创建它。 可以看到,angular将检查serviceB依赖关系,并查
方法是否可能返回“object”?谢谢
问题内容: 例如,我有一篇文章应根据句子的边界进行拆分,例如“ ”,“ ”,“ ”和“ ”。 但是众所周知,无论是功能还是功能,它们都删除了定界符。 任何帮助将非常感激! 编辑: 我只能拿出下面的代码,虽然效果很好。 谢谢!!!大家。只需3分钟即可获得3个答案!对于在提出问题之前无法仔细阅读PHP手册,我必须深表歉意。抱歉。 问题答案: 带有标志 例如
问题内容: 我一直在寻找一个问题:从其字符串名称实例化一个类,该字符串名称描述了如何在具有名称时实例化一个类。有没有办法用Java做到这一点?我将拥有包名称和类名称,并且我需要能够创建具有该特定名称的对象。 问题答案: 两种方式: 方法1-仅适用于具有无参数构造函数的类 如果你的类具有无参数构造函数,则可以使用并使用该方法创建一个实例(尽管请注意,此方法通常被认为是有害的,因为它可以击败Java的
问题内容: 我想在Python中使用PhantomJS。我用谷歌搜索了这个问题,但是找不到合适的解决方案。 我发现 可能是一个不错的选择。但是我无法通过一些争论。 使用可能是目前合适的解决方案。我想知道是否有更好的解决方案。 有没有办法在Python中使用PhantomJS? 问题答案: 在python中使用PhantomJS的最简单方法是通过Selenium。最简单的安装方法是 安装NodeJS
我想在Python中使用PhantomJS。我谷歌了这个问题,但找不到合适的解决方案。 我发现可能是一个不错的选择。但我无法向它传递一些论据。 使用目前可能是一个合适的解决方案。我想知道是否有更好的解决办法。 有没有办法在Python中使用PhantomJS?