对于我的azuredatabricks,我创建了两个笔记本,ExtractorPython和ExtractorScala,它们分别用Python和Scala编写。他们分别称笔记本为DocumentationPython和DocumentationScala。你知道吗
在这两个过敏笔记本中,一个示例代码将检查是否存在ProblemData表。如果是这样,它将把其他4个表连接在一起,以插入到主表文档中。表的大小从6MB到2800MB不等。下面是Python中的示例文档代码:
IfExtsDf = sqlContext.sql("SHOW TABLES LIKE 'ProblemData '")
#If ProblemData exists then insert data from query into Documentation
if IfExtsDf.head(1):
spark.sql(
"INSERT INTO Documentation "+
"SELECT " +
"EPA.Field1, " +
"msa.Field2, " +
"RAM.Field3 " +
"FROM ProblemData AS EPA " +
"INNER JOIN MedicalRecordNumbers AS msa ON " +
" msa.MisAllrgID = EPA.AllergenID AND " +
" msa.SourceID = EPA.SourceID AND " +
" msa.EhrId = EPA.EhrId " +
"LEFT JOIN Staging_Main AS RAM ON " +
" RAM.PatientID = EPA.PatientID AND " +
" RAM.SourceID = EPA.SourceID AND " +
" RAM.EhrId = EPA.EhrId"
)
这个查询比在Documentation表中有8个常规插入和3个条件插入的查询更复杂,但我不能显示更多。 下面是Python中的基本提取器代码:
#Run DocumentationPython
dbutils.notebook.run("DocumentationPython",0)
以下是我的两个节点的Spark群集配置:
以下是Python与Scala在几分钟内多次运行的速度测试:
提取器主题:3.22分钟
文档Python:2.78分钟
提取器Scala:3.24分钟
文档Scala:2.88分钟
下面是我将集群升级到6个节点时的速度测试:
提取器主题:2.22分钟
文档Python:1.95分钟
提取器Scala:分钟
文档Scala:1.98分钟
我读到Scala应该比Python快。一些articles说它的速度快了10倍。我的测试显示没有任何区别,Python稍微快一点。为什么?你知道吗
另外,为什么从另一个笔记本调用一个笔记本会平均增加20秒,例如,从ExtractorPython调用DocumentationPython?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐