<p>Azure现在不想使用大量的Azure@JSON文件。但是,既然您使用了azuredatabricks,那么编写一个简单的Python脚本来完成同样的事情对您来说就更容易了。因此,一个有效的解决方案是直接使用azurestoragesdk和<code>pandas</code>Python包,通过对Azure数据库的几个步骤来实现这一点。在</p>
<ol>
<li><p>可能这些JSON文件都在Azure Blob存储的一个容器中,所以你需要通过<a href="https://azure-storage.readthedocs.io/ref/azure.storage.blob.baseblobservice.html#azure.storage.blob.baseblobservice.BaseBlobService.list_blob_names" rel="nofollow noreferrer">^{<cd2>}</a>在容器中列出它们,并用sas token for pandas<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_json.html" rel="nofollow noreferrer">^{<cd3>}</a>函数生成它们的url,代码如下。在</p>
<pre><code>from azure.storage.blob.baseblobservice import BaseBlobService
from azure.storage.blob import ContainerPermissions
from datetime import datetime, timedelta
account_name = '<your account name>'
account_key = '<your account key>'
container_name = '<your container name>'
service = BaseBlobService(account_name=account_name, account_key=account_key)
token = service.generate_container_shared_access_signature(container_name, permission=ContainerPermissions.READ, expiry=datetime.utcnow() + timedelta(hours=1),)
blob_names = service.list_blob_names(container_name)
blob_urls_with_token = (f"https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}?{token}" for blob_name in blob_names)
#print(list(blob_urls_with_token))
</code></pre></li>
<li><p>然后,您可以通过<code>read_json</code>函数直接从blob读取这些JSON文件,以创建它们的pandas Dataframe。在</p>
^{pr2}$
<p>即使您想将它们合并到一个大的CSV文件中,也可以首先通过<a href="http://pandas.pydata.org/pandas-docs/stable/reference/frame.html#combining-joining-merging" rel="nofollow noreferrer">^{<cd5>}</a>中列出的pandas函数将它们合并到一个大数据帧中,比如<code>append</code>。</p></li>
<li><p>要将数据帧写入csv文件,我认为通过<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html" rel="nofollow noreferrer">^{<cd7>}</a>函数很容易。或者,您可以将pandas数据帧转换为Azure Databricks上的PySpark数据帧,如下代码所示。在</p>
<pre><code>from pyspark.sql import SQLContext
from pyspark import SparkContext
sc = SparkContext()
sqlContest = SQLContext(sc)
spark_df = sqlContest.createDataFrame(df)
</code></pre></li>
</ol>
<p>所以接下来,不管你想做什么,都很简单。如果你想在azuredatabricks中将脚本安排为笔记本,你可以参考官方文档<a href="https://docs.azuredatabricks.net/user-guide/jobs.html" rel="nofollow noreferrer">^{<cd8>}</a>来运行Spark作业。在</p>
<p>希望有帮助。在</p>