Unity目录中不支持AttachDistributedSequence



我正试图使用pyspark.pandas.read_table将Databricks上的表读取到DataFrame,并收到以下错误:

AnalysisException: [UC_COMMAND_NOT_SUPPORTED] AttachDistributedSequence is not supported in Unity Catalog.;
AttachDistributedSequence[__index_level_0__#767L, _c0#734, carat#735, cut#736, color#737, clarity#738, depth#739, table#740, price#741, x#742, y#743, z#744] Index: __index_level_0__#767L
+- SubqueryAlias spark_catalog.default.diamonds
+- Relation hive_metastore.default.diamonds[_c0#734,carat#735,cut#736,color#737,clarity#738,depth#739,table#740,price#741,x#742,y#743,z#744] csv

该表是根据Databricks快速入门笔记本创建的:

DROP TABLE IF EXISTS diamonds;

CREATE TABLE diamonds
USING csv
OPTIONS (path "/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", header "true")

我正试着用读取表格

import pyspark.pandas as ps
psdf = ps.read_table("hive_metastore.default.diamonds")

并得到上面的错误。

将表读入spark.sql.DataFrame与配合使用效果良好

df = spark.read.table("hive_metastore.default.diamonds")

集群版本为

Databricks Runtime Version 11.2
Apache Spark 3.3.0
Scala 2.12

我对熊猫已经很熟悉了,我想使用pyspark.pandas.DataFrame,因为我认为它会有一个熟悉的API,而且我学习和使用起来很快。

我有以下问题:

  • 这个错误是什么意思
  • 我能做些什么来读取pyspark.pandas.DataFrame的表格
  • 或者,我应该学习pyspark.sql.DataFrame并使用它吗?如果是,为什么

AttachDistributedSequence是Pandas在Spark上用于创建分布式索引的一个特殊扩展。目前,在为Unity Catalog启用的共享集群上不支持它,因为在这些集群上启用的操作集受到限制。解决方法有:

  • 使用启用了Unity目录的单用户集群
  • 使用Spark API读取表,然后使用pandas_api函数(doc(在Spark DataFrame上转换为Pandas。(在Spark 3.2.x/3.3.x中,它被称为to_pandas_on_spark(doc((:
pdf = spark.read.table("abc").pandas_api()

附言:不建议使用.toPandas,因为它会将所有数据拉到驱动程序节点。

相关内容

  • 没有找到相关文章