有没有办法使用Java SDK将文件从本地上传到ADLS?我已经尝试使用以下代码上传,但代码没有被编译,因为它说构造函数不可见。
com.microsoft.azure.datalake.store.Utils ut=new com.microsoft.azure.datalake.store.Utils(adlStoreclient);
ut.upload(filePathToUpload, fileToUpload, IfExists.OVERWRITE);
答案 0 :(得分:0)
我检查了official doc,除了Java SDK中的upload
和download
方法外,还有创建,列表,删除方法等。
然后我搜索了Azure Data Lake java sdk source code,它似乎也不包含upload
类中的download
和ADLStoreClient
方法。
基于这种情况,我建议您使用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。