如何以与语言无关的方式将本地 parquet 文件上传到远程 Databricks 表?

问题描述 投票:0回答:1

我有一个 dotnet 项目,我正在生成一堆 parquet 文件。我想将这些镶木地板文件上传到 Databricks。我宁愿避免将 python 引入到这个项目中。有没有不需要Python的方法来做到这一点?

Databricks 文档 似乎仅涵盖 UI/手动情况。

我希望有某种我可以调用的 HTTP API 或类似的东西。 ODBC 有用吗?

databricks
1个回答
0
投票

取决于文件有多大。是否正在进行一次,桌子后面的存储是什么,它们是什么类型的等等。

正如您提到的 .NET 和 ODBC:这是您可以使用的 Databricks ODBC 驱动程序

总的来说,您有两个选择:

  1. 拉。

您必须以某种方式使“本地”镶木地板文件可供 Databricks 计算使用。因此,您必须将其复制到可从 Databricks 计算中读取的某个存储/FS。例如

  • 将文件写入 S3/ADLS 或 Databricks 工作区或某些 dbfs 挂载。
  • 编写一些将在 Databricks 集群上运行的作业/笔记本/代码,从所述存储中读取并写入您的表。
  1. 推。

假设“远程 Databricks 表”是由 S3 存储支持的 Delta 表(比如

s3://bucket/path/to/delta/table1
)。

  • 创建一个对所述表具有写访问权限的 Databricks 集群。
  • 使用您选择的语言在您选择的计算机上编写/运行代码:

也可以运行本地 Spark 集群并使用 Delta lib 写入 Delta 表,而根本不使用 Databricks。例如

$ pyspark --packages io.delta:delta-core_2.12:2.4.0,org.apache.hadoop:hadoop-aws:3.3.4 \ --conf "spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension" \ --conf "spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog" ......snip...... io.delta#delta-core_2.12 added as a dependency org.apache.hadoop#hadoop-aws added as a dependency Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ _/ /__ / .__/\_,_/_/ /_/\_\ version 3.5.0 /_/ Using Python version 3.10.12 (main, Jun 8 2023 17:32:40) SparkSession available as 'spark'. >>> df = spark.read.parquet('/tmp/path/to/local/parquet/file1.parquet') >>> df.write.format('delta').save('s3a://bucket/path/to/delta/table1') >>>
    
© www.soinside.com 2019 - 2024. All rights reserved.