azure databricks 一般会建议把数据存入到“存储帐户”blob上 ,如果直接放到workspace成本实在是太高了

azure databricks 一般会建议把数据存入到“存储帐户”blob上
1、需要提前建立好databricks与blob之间的认证(可以让azure的技术支持配置好)
2、就可以正常使用,创建库表
3、建库分层与建表需要注意的细节
1、你新建库的时候你需要指定blob上的目录,要不然每次建库下面的表还是会在workspace内
2、删表的时候的时候也需要指定,我记得一开始使用的那个版本drop table 的时候blob上面的对应的文件依赖存在,需要指定删除目录才是彻底删除(现在可能不一样了)
4、语法如下

-- 创建 根据自己的需要修改库名 ,文件路径名--》LOCATION
CREATE DATABASE IF NOT EXISTS demo_database LOCATION 'dbfs:/demo/warehouse/demo_database'

-- 删除库
drop database demo_database

# 删除库表名所在的路径
dbutils.fs.rm('dbfs:/demo/warehouse/demo_database', True);

5、表删除是相似的我就不列出来了
6、表连续python脚本删除如下

# Option: Drop all of exist tables
# 不要乱改!!!!
databaseName_target ="demo_database"
sqlQueryShowTables = "SHOW TABLES FROM {0}".format(databaseName_target)
tablesDF = spark.sql(sqlQueryShowTables).collect()
display(tablesDF)

for row in tablesDF:
    sqlDropTable = "DROP TABLE IF EXISTS {0}.{1}".format(row['database'], row['tableName'])
    try:
        spark.sql(sqlDropTable)
        print("INFO: {0} completed.".format(sqlDropTable))
    except Exception as e:
        print("ERROR: Drop table {0} failed.".format(row["name"]))
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常感谢您的提问。以下是我为您准备的Python代码,可以实现将Azure Storage Account文件夹里的数据复制到Azure Databricks里的DBFS。 ``` import os from azure.storage.blob import BlobServiceClient, BlobClient from pyspark.sql import SparkSession # 设置 Azure Storage Account 的连接字符串和容器名称 connect_str = "[Azure Storage Account连接字符串]" container_name = "[容器名称]" # 创建 BlobServiceClient 对象并连接 Azure Storage Account blob_service_client = BlobServiceClient.from_connection_string(connect_str) # 获取容器内所有 blob 的迭代器 blobs = blob_service_client.get_container_client(container_name).list_blobs() # 创建 SparkSession 对象并连接到 Azure Databricks 的 DBFS spark = SparkSession.builder.appName("Copy Azure Blob to DBFS").getOrCreate() dbutils.fs.mkdirs("dbfs:/mnt/[DBFS 挂载点]") # 循环遍历容器内所有 blob for blob in blobs: # 获取当前 blob 的名称和地址 blob_client = blob_service_client.get_blob_client(container_name, blob.name) blob_url = blob_client.url # 从 Azure Storage Account 中下载当前 blob 对应的文件 with open(blob.name, "wb") as my_blob: download_stream = blob_client.download_blob() my_blob.write(download_stream.readall()) # 将下载的文件上传到 Azure Databricks 中的 DBFS dbutils.fs.cp("file:%s" % os.getcwd()+"/"+blob.name, "dbfs:/mnt/[DBFS 挂载点]/"+blob.name) # 删除本地下载的文件 os.remove(blob.name) ``` 在使用上述代码之前,请先将代码中的以下部分替换为您自己的信息: - `[Azure Storage Account连接字符串]`:替换为您的 Azure Storage Account 连接字符串。 - `[容器名称]`:替换为您要复制的 Azure Storage Account 中的容器名称。 - `[DBFS 挂载点]`:替换为您在 Azure Databricks 中要挂载到的 DBFS 路径。 需要注意的是,执行此脚本Azure Storage Account 中的所有文件复制到 Azure Databricks 中的 DBFS 中,因此请谨慎操作。同时,如果您的容器中包含大量的文件,复制可能需要一些时间,请耐心等待。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值