我正在尝试使用java程序连接到azure数据湖,我可以从/从azure数据湖获取数据,但我的程序无法通过错误请求错误进行身份验证和终止。
我有Microsoft免费跟踪帐户,并已完成以下步骤。
现在我有了这个java代码。
resource = "https://XXXXXlake.azuredatalakestore.net"
ClientCredsTokenProvider provider = new ClientCredsTokenProvider(authEndPointToken, clientID, clientSecret);
AzureADToken token = provider.getToken();
现在我的问题是,
由于
答案 0 :(得分:0)
根据我的经验,这指向了权限'传递的问题或错误的参数......尽管错误信息并未这样说。
请再次检查您的权限。确保您已经通过Data Lake Store顶级目录确实获得了Azure Active Directory App权限。
您可能会给App"所有者"对adls的权利仅用于测试目的。您还可以使用"添加用户向导"
答案 1 :(得分:0)
以下代码对我有用。为此,您需要提供clientid,clientkey,authTokenEndpoint和accountFQDN,您可以从azure数据湖控制台获取。 请确保您已获得应用程序的所有必要权限,以访问您拥有数据的azure活动目录和位置。
public class TestConnection {
public static void main(String[] args) {
try {
String clientId = "xyz";
String authTokenEndpoint = "https://login.microsoftonline.com/6f04c329-75be-4f3f-bb37-ba8857b01aa6/oauth2/token";
String clientKey = "abc";
AccessTokenProvider provider = new ClientCredsTokenProvider(authTokenEndpoint, clientId, clientKey);
String accountFQDN = "efg"; // full account FQDN, not just the account name
ADLStoreClient client = ADLStoreClient.createClient(accountFQDN, provider);
InputStream in = client.getReadStream("/abc/def/xyz.json");
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
while ( (line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
System.out.println();
System.out.println("File contents read.");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}