Я могу аутентифицировать, создавать кубы и вставлять данные в кубы MSRT, используя python. Нужно понять, можно ли это сделать через Spark-Scala.
Ниже приведены 3 функции Python, в которых я попытался и успешно вставил данные в кубы MSTR. То же самое мне нужно сделать со Scala. Пожалуйста, дайте мне знать, как мне поступить
def login(base_url, api_login, api_password):
print("Getting token...")
data_get = {'username': api_login,
'password': api_password,
'loginMode': 1}
r = requests.post(base_url + 'auth/login', data=data_get)
if r.ok:
authToken = r.headers['X-MSTR-AuthToken']
cookies = dict(r.cookies)
print("Token: " + authToken)
return authToken, cookies
else:
print("HTTP %i - %s, Message %s" % (r.status_code, r.reason, r.text))
def create_cube(base_url, auth_token, cookies, project_id, cube_structure_json):
headers_cc = {'X-MSTR-AuthToken': auth_token,
'Content-Type': 'application/json', # IMPORTANT!
'Accept': 'application/json',
'X-MSTR-ProjectID': project_id}
print("\nCreating new cube...")
r = requests.post(base_url + "datasets", headers=headers_cc, data=cube_structure_json, cookies=cookies)
if r.ok:
print("Error: " + str(r.raise_for_status()) + " || HTTP Status Code: " + str(r.status_code))
print("\nCube CREATED successfully")
print("\nCube ID: " + r.json()['datasetId'])
datasetId = r.json()['datasetId']
print("Cube Name: " + r.json()['name'])
print("Table ID: " + r.json()['tables'][0]['id'])
tablesid = r.json()['tables'][0]['id']
print("Table Name: " + r.json()['tables'][0]['name'])
print(
"\nRemember to copy and note down Cube ID (dataset ID) and Table ID. Enter those values in the Python script 'Parameters' section")
return datasetId, tablesid
else:
print("HTTP %i - %s, Message %s" % (r.status_code, r.reason, r.text))
def push_data(updatePolicy, insert_data_json, auth_token, cookies, project_id, datasetId, table_name):
#pushed_data = base64.b64encode(bytes(pushed_data_json, 'utf-8')).decode('ascii')
push_url = base_url + "datasets/" + datasetId + "/tables/" + table_name
headers_push = {'X-MSTR-AuthToken': auth_token,
'Content-Type': 'application/json',#IMPORTANT!
'X-MSTR-ProjectID': project_id,
'updatePolicy': updatePolicy
}
print("\nPushing data...")
r = requests.patch(push_url, headers=headers_push, data=insert_data_json, cookies=cookies)
if r.ok:
print("Pushed successfully...")
print("Error: " + str(r.raise_for_status()) + " || HTTP Status Code: " + str(r.status_code))
else:
print("HTTP %i - %s, Message %s" % (r.status_code, r.reason, r.text))
Ожидания: необходимо перенести данные в кубы MSTR в режиме реального времени.