我在Spark 2.1.0/Cassandra 3.10集群(4台机器*12个内核*256个RAM*2个SSD)上工作,很长一段时间以来,我一直在努力使用Spark Cassandra connector 2.0.1向Cassandra写入特定的大数据帧。
这是我的表的模式
CREATE TABLE sample_table (
hash blob,
field1 int,
field2 int,
field3 boolean,
field4 bigint,
field5 bigint,
field6 list<FROZEN<some_type>>,
field7 list<FROZEN<some_other_type>>,
PRIMARY KEY (hash)
);
用作主键的散列是256位;列表字段包含多达1MB的某种结构化类型的数据。总共,我需要写几亿行。
目前,我正在使用以下写入方法:
def storeDf(df: Dataset[Row]) = {
df.write
.cassandraFormat(sample_table, sample_keyspace)
.options(
WriteConf.ConsistencyLevelParam.option(ConsistencyLevel.ANY)
)
.save
}
... Spark使用48个并行任务写入数据帧,每个任务在1.2h内写入约95MB,这当然不是我想要的。
我很感激关于如何调整写入性能和/或在这样的设置中修改我的模式的建议。通过哈希和分区内的排序进行重新分区有意义吗?
谢谢!
有关Spark Cassandra连接器调整,请参阅本博客。你会对预期的性能数字有所了解。您还可以尝试另一种开源产品SnappyData,即Spark数据库,它将在您的用例中为您提供非常高的性能。
我正在尝试使用Databricks的spark-csv2.10依赖关系将一个数据帧写入到HDFS的*.csv文件。依赖关系似乎可以正常工作,因为我可以将.csv文件读入数据帧。但是当我执行写操作时,我会得到以下错误。将头写入文件后会出现异常。 当我将查询更改为时,write工作很好。 有谁能帮我一下吗? 编辑:根据Chandan的请求,这里是的结果
Spark版本:2.3 hadoop dist:azure Hdinsight 2.6.5平台:azure存储:BLOB 集群中的节点:6个执行器实例:每个执行器6个内核:每个执行器3个内存:8gb 试图通过同一存储帐户上的spark数据框将azure blob(wasb)中的csv文件(大小4.5g-280列,2.8 mil行)加载到拼花格式。我重新划分了大小不同的文件,即20、40、60、10
我有一些Spark经验,但刚开始使用Cassandra。我正在尝试进行非常简单的阅读,但性能非常差——不知道为什么。这是我正在使用的代码: 所有3个参数都是表上键的一部分: 主键(group\u id,epoch,group\u name,auto\u generated\u uuid\u field),聚类顺序为(epoch ASC,group\u name ASC,auto\u generat
我想过滤掉具有“c2”列前3个字符的记录,无论是“MSL”还是“HCP”。 所以输出应该如下所示。 有谁能帮忙吗? 我知道df。过滤器($c2.rlike(“MSL”))--用于选择记录,但如何排除记录? 版本:Spark 1.6.2 Scala:2.10
我正在尝试使用Apache Spark,以便将具有多个连接和子选择的(大型)SQL查询的结果加载到来自Spark的DataFrame中,如从SQL查询创建Spark Dataframe中所述。 不幸的是,我这样做的尝试导致了拼花错误: 线程“main”组织中出现异常。阿帕奇。火花sql。AnalysisException:无法推断拼花地板的架构。必须手动指定。 我从谷歌看到的信息表明,当数据帧为空
在PySpark中或者至少在Scala中,Apache Spark中是否有与Pandas Melt函数等价的函数? 到目前为止,我一直在用Python运行一个示例数据集,现在我想对整个数据集使用Spark。