我们正在运行 BlueData 3.7,我使用 Spark 和 YARN 启动了 Cloudera 5.14 集群。我从 Qumulo 每个 NFS 每个 DTAP 获取一个 csv 文件到 Spark 容器中,然后只做一个小过滤器并将结果作为每个 DTAP 的 parquet 文件保存到我们的外部 HDFS Cloudera 集群中。一切正常,但将文件写入外部 HDFS 集群。我完全可以从 HDFS 读取每个 DTAP 并将每个 DTAP 写入 Qumulo NFS。只是按 DTAP 写入 HDFS 是行不通的。我收到消息说我在 EPIC 的 AD 组中的用户没有写入权限(如下图所示)。
知道为什么吗?HDFS 的 DTAP 未配置为只读。所以我希望它可以被读写。
笔记:
- 我已经检查了 Cloudera 中的访问权限。
- 我检查了 BD 集群中的 AD 凭据。
- 我可以从 HDFS 读取这些凭据。
这是我的代码:
$ pyspark --master yarn --deploy-mode client --packages com.databricks:spark-csv_2.10:1.4.0
>>> from pyspark.sql import SQLContext
>>> sqlContext = SQLContext(sc)
>>> df = sqlContext.read.format('com.databricks.spark.csv').options(header='true', inferschema='true').load('dtap://TenantStorage/file.csv')
>>> df.take(1)
>>> df_filtered = df.filter(df.incidents_85_99 == 0)
>>> df_filtered.write.parquet('dtap://OtherDataTap/airline-safety_zero_incidents.parquet')
错误信息:
hdfs_access_control_exception:授权被拒绝