Apache spark 从Spark中的HDFS或S3读取边缘数据库文件
我将列表Db文件存储到本地文件夹中,当我在本地模式下运行spark作业时,我可以提供本地路径来读取这些本地文件。但在客户端或群集模式下运行时,路径不可访问。似乎它们需要保存在HDFS中,或者直接从S3访问。 我正在做以下工作:Apache spark 从Spark中的HDFS或S3读取边缘数据库文件,apache-spark,amazon-s3,hdfs,java-io,edgedb,Apache Spark,Amazon S3,Hdfs,Java Io,Edgedb,我将列表Db文件存储到本地文件夹中,当我在本地模式下运行spark作业时,我可以提供本地路径来读取这些本地文件。但在客户端或群集模式下运行时,路径不可访问。似乎它们需要保存在HDFS中,或者直接从S3访问。 我正在做以下工作: java.io.File directory = new File(dbPath) 在dbPath中,所有数据库文件列表都存在。当我在AWS上运行这个Spark作业时,是否有任何简单的方法可以从HDFS或S3访问这些文件文件夹。据我所知,目前没有一种标准的方法可以做到这
java.io.File directory = new File(dbPath)
在dbPath中,所有数据库文件列表都存在。当我在AWS上运行这个Spark作业时,是否有任何简单的方法可以从HDFS或S3访问这些文件文件夹。据我所知,目前没有一种标准的方法可以做到这一点。但是,通过仔细检查转储是如何生成的,您似乎可以对转储读取协议进行反向工程 根据,看起来您可以使用二进制流读取器打开文件并忽略给定转储文件的前15个字节
output.write\u all(
b“\xFF\xD8\x00\x00\xD8EDGEDB\x00DUMP\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x01“
).等待?;
但是,似乎剩余的转储将通过以下方式写入可变异步未来结果:
header\u buf.truncate(0);
收割台推压(b'H');
标题(buf.extend)(
&sha1::sha1::from(&packet.data).digest().bytes()[…]);
标题(buf.extend)(
&(packet.data.len()作为u32.to_be_bytes()[…]);
输出。全部写入(&header_buf)。等待?;
输出。全部写入(&packet.data)。等待?;
使用SHA1编码。
不幸的是,我们现在还不清楚,因为我们不知道头的字节序列实际上是什么意思。您需要调查未消化内容与asyncpg和Postgres使用的任何协议相比的外观,以验证转储的相似性
或者,您可以使用一些预先存在的数据加载器为准备一个垫片