小编Ski*_*ice的帖子

从BlobKey获取Google云端存储文件

我编写了一个Google App Engine应用程序,它利用Blobstore来保存以编程方式生成的数据.为此,我使用了Files API,遗憾的是,该API已被弃用,以支持Google云端存储.所以我正在重写我的助手类来使用GCS.

我希望保持接口尽可能与之前类似,也因为我在数据存储区中保留BlobKeys以保持对文件的引用(并且更改生产应用程序的模型总是很痛苦).当我将东西保存到GCS时,我检索一个BlobKey

BlobKey blobKey = blobstoreService.createGsBlobKey("/gs/" + fileName.getBucketName() + "/" + fileName.getObjectName());
Run Code Online (Sandbox Code Playgroud)

此处的规定,我将其保留在数据存储区中.

所以这里有一个问题:文档告诉我如何blobstoreService.serve(blobKey, resp);在servlet响应中提供GCS文件,但是如何检索文件内容(如InputStream,字节数组或其他)以在我的代码中使用它进行进一步处理?在我目前的实现中,我通过FileReadChannel读取AppEngineFile(两者都弃用)来做到这一点.

java google-app-engine blobstore google-cloud-storage

6
推荐指数
1
解决办法
4234
查看次数

通过JDBC集成Spark SQL和Apache Drill

我想从使用Apache Drill在CSV数据(在HDFS上)执行的查询结果中创建Spark SQL DataFrame.我成功配置了Spark SQL,使其通过JDBC连接到Drill:

Map<String, String> connectionOptions = new HashMap<String, String>();
connectionOptions.put("url", args[0]);
connectionOptions.put("dbtable", args[1]);
connectionOptions.put("driver", "org.apache.drill.jdbc.Driver");

DataFrame logs = sqlc.read().format("jdbc").options(connectionOptions).load();
Run Code Online (Sandbox Code Playgroud)

Spark SQL执行两个查询:第一个获取模式,第二个查询实际数据:

SELECT * FROM (SELECT * FROM dfs.output.`my_view`) WHERE 1=0

SELECT "field1","field2","field3" FROM (SELECT * FROM dfs.output.`my_view`)
Run Code Online (Sandbox Code Playgroud)

第一个是成功的,但在第二个中Spark包含双引号内的字段,这是Drill不支持的内容,因此查询失败.

有人设法使这种集成工作吗?

谢谢!

hadoop jdbc apache-spark apache-spark-sql apache-drill

5
推荐指数
1
解决办法
1053
查看次数