Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 这是将数据加载并合并到DataRicks上现有增量表中的最佳方法吗?_Apache Spark_Apache Spark Sql_Azure Databricks_Delta Lake - Fatal编程技术网

Apache spark 这是将数据加载并合并到DataRicks上现有增量表中的最佳方法吗?

Apache spark 这是将数据加载并合并到DataRicks上现有增量表中的最佳方法吗?,apache-spark,apache-spark-sql,azure-databricks,delta-lake,Apache Spark,Apache Spark Sql,Azure Databricks,Delta Lake,我不熟悉使用Databricks,我正在尝试测试将每小时一次的文件持续加载到主文件中用于报告的有效性。每个小时文件大约为3-400gb,包含~1-1.3b条记录。我想让主表存储约48小时的数据,但我真的只需要6小时的文件来完成我的数据视图 我目前的流程如下,看起来还可以。csv小时文件存储在Azure DataLake(Gen1)上,主表使用ADL Gen2作为存储。这些是最好的选择吗?这个过程听起来合理吗,还是我做错了什么可怕的事情 csvdata=spark.read.format(“csv

我不熟悉使用Databricks,我正在尝试测试将每小时一次的文件持续加载到主文件中用于报告的有效性。每个小时文件大约为3-400gb,包含~1-1.3b条记录。我想让主表存储约48小时的数据,但我真的只需要6小时的文件来完成我的数据视图

我目前的流程如下,看起来还可以。csv小时文件存储在Azure DataLake(Gen1)上,主表使用ADL Gen2作为存储。这些是最好的选择吗?这个过程听起来合理吗,还是我做错了什么可怕的事情

csvdata=spark.read.format(“csv”).option(“header”,“true”).option(“ignoreLeadingWhiteSpace”,“true”).option(“ignoreTrailingWhiteSpace”,“true”).option(“timestampFormat”,“yyyy-MM-dd HH:MM:ss.SSS”).option(“delimiter”,“true”).option(“inferSchema”,“true”).option(“mode”,“FAILFAST”).csv(“adl://pathToCsv)。createOrReplaceTempView(“tempdata”).cache()
```sql合并
合并到主表中
使用tempdata
在primaryTable.UserGuid=tempdata.UserGuid和primaryTable.OrgGuid=tempdata.OrgGuid上
匹配并转换(unix_时间戳(primaryTable.timestamp,'yyyyy/MM/dd HH:MM:ss.SSS')作为时间戳)
我怀疑
.cache()
是否有任何用处。您是否比较了spark计划与否?我怀疑
.cache()
是否有任何用处。你有没有比较过有没有星火计划?
csvdata = spark.read.format("csv").option("header","true").option("ignoreLeadingWhiteSpace","true").option("ignoreTrailingWhiteSpace","true").option("timestampFormat","yyyy-MM-dd HH:mm:ss.SSS").option("delimiter","|").option("inferSchema","true").option("mode","FAILFAST").csv("adl://pathToCsv").createOrReplaceTempView("tempdata").cache()

```sql Merge
MERGE INTO primaryTable
USING tempdata
ON primaryTable.UserGuid = tempdata.UserGuid AND primaryTable.OrgGuid = tempdata.OrgGuid
WHEN MATCHED AND cast(unix_timestamp(primaryTable.timestamp,'yyyy/MM/dd HH:mm:ss.SSS') AS timestamp) < cast(unix_timestamp(tempdata.timestamp,'yyyy/MM/dd HH:mm:ss.SSS') AS timestamp) THEN
  UPDATE SET *
WHEN NOT MATCHED
  THEN INSERT *