使用Java SDK从本地将文件上载到Azure Datalake Store

时间:2018-02-14 11:05:43

标签: java azure azure-data-lake azure-java-sdk

有没有办法使用Java SDK将文件从本地上传到ADLS?我已经尝试使用以下代码上传,但代码没有被编译,因为它说构造函数不可见。

com.microsoft.azure.datalake.store.Utils ut=new com.microsoft.azure.datalake.store.Utils(adlStoreclient);

ut.upload(filePathToUpload, fileToUpload, IfExists.OVERWRITE);

2 个答案:

答案 0 :(得分:0)

我检查了official doc,除了Java SDK中的uploaddownload方法外,还有创建,列表,删除方法等。

然后我搜索了Azure Data Lake java sdk source code,它似乎也不包含upload类中的downloadADLStoreClient方法。

基于这种情况,我建议您使用REST API将文件上传到ADL。

您需要按照此doc通过REST API将数据上传到ADL。如何获取应用程序ID和密钥,您可以参考official document。获取访问数据池的权限的更多详细步骤,您可以引用另一个SO thread

获取访问令牌示例代码:

private static String clientId = "***";
private static String authTokenEndpoint = "https://login.microsoftonline.com/***/oauth2/token";
private static String clientKey = "***";

public static void main(String[] args) throws IOException {
        AccessTokenProvider provider = new ClientCredsTokenProvider(authTokenEndpoint, clientId, clientKey);
        String accessToken=provider.getToken().accessToken;
}

然后使用此Upload Data步骤将您的本地文件上传到ADL。

希望它对你有所帮助。

答案 1 :(得分:0)

我设法解决了这个问题。 SDK提供了一种上传文件的方法,就像我在问题中提到的那样。另外,我曾提到构造函数不可见。所以,我在这里找到了来自sdk的上传方法(https://github.com/Azure/azure-data-lake-store-java/blob/master/src/main/java/com/microsoft/azure/datalake/store/Utils.java),并实现了相同的概念,将数据从本地文件传输到ADLS。