我正在使用HDFS和spark中的数据运行管道,代码看起来像
options = PipelineOptions([
"--runner=PortableRunner",
"--job_endpoint=localhost:8099", #spark cluster job_endpoint
"--environment_type=LOOPBACK"
])
with beam.Pipeline(options) as p:
_ = (p
| 'ReadData' >> beam.io.ReadFromText("hdfs://user/me/data.csv")
job_endpoint是一个可以免费访问HDFS的Spark集群,但是令我感到困惑的是,无论是在本地环境上运行的管道是通过HDFS获取数据还是将整个数据读取和处理工作打包为一项工作向前火花集群。因为本地环境需要keytab才能访问HDFS,所以我不知道如何在光束管道上进行设置。但是,如果整个管道运行在spark上,则需要更长的身份验证。
代码的结果表明,我需要身份验证,但是我无法想象光束管道将在本地加载数据。
BeamIOError: Match operation failed with exceptions {'hdfs://user/me/data.csv': HdfsError('Authentication failure. Check your credentials.',)}
您的想法将非常有帮助,非常感谢