有没有办法使用 Java SDK 将文件从本地上传到 ADLS?我尝试使用以下代码上传,但代码没有被编译,因为它说构造函数不可见。
com.microsoft.azure.datalake.store.Utils ut=new com.microsoft.azure.datalake.store.Utils(adlStoreclient);
ut.upload(filePathToUpload, fileToUpload, IfExists.OVERWRITE);
有没有办法使用 Java SDK 将文件从本地上传到 ADLS?我尝试使用以下代码上传,但代码没有被编译,因为它说构造函数不可见。
com.microsoft.azure.datalake.store.Utils ut=new com.microsoft.azure.datalake.store.Utils(adlStoreclient);
ut.upload(filePathToUpload, fileToUpload, IfExists.OVERWRITE);
我设法解决了这个问题。SDK 提供了一种上传文件的方法,就像我在问题中提到的那样。另外,我曾提到构造函数是不可见的。所以,我在这里找到了来自 sdk 的上传方法(https://github.com/Azure/azure-data-lake-store-java/blob/master/src/main/java/com/microsoft/azure/datalake/ store/Utils.java)并实现了相同的概念以将数据从我的本地文件流式传输到 ADLS。
我查看了官方文档,除了Java SDK 中的upload
和方法外,还有创建、列出、删除方法等。download
然后我搜索了Azure Data Lake java sdk 源代码,它似乎也不包含Class中的upload
anddownload
方法。ADLStoreClient
基于这种情况,我建议您使用 REST API 将文件上传到 ADL。
您需要按照此文档通过 REST API 将数据上传到 ADL。如何获取应用ID和秘钥可以参考官方文档。获得访问数据湖权限的更多详细步骤可以参考另一个SO 线程。
获取访问令牌示例代码:
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;
}
然后使用此上传数据步骤将您的本地文件上传到 ADL。
希望它可以帮助你。