Я пытаюсь Python запросить данные Splunk в hdfs с помощью API Call.Я не знаю, имеет ли это какое-либо отношение к самим данным Splunk или это ограничение API-вызовов.
Я могу извлекать небольшие объемы данных, но я пытался потратить несколько часовданные и он только вернул 100 записей.В splunk тот же запрос вернул 100K + записей.
Выполнить запрос splunk:
import os
import requests
import sys
import time
import xml.etree.ElementTree as ET
data = {
'search': search
}
r = requests.post(ENDPOINT,
data=data,
verify=False,
auth=(username, password))`enter code here`
response_xml_as_string = r.text
responseXml = ET.fromstring(response_xml_as_string)
sid= responseXml.find('sid')
Проверьте, выполнено ли это.Если вы получаете 0, повторяйте это до тех пор, пока не получите 1:
res = requests.get(ENDPOINT + '/{0}' .format(sid),
verify=False,
auth=(username, password))
root = ET.fromstring(res.text)
for child in root.iter():
try:
if child.attrib['name'] == 'isDone':
is_done = child.text
except:
is_done=0
print(is_done)
Потоковые сплит-данные в hdfs:
data = {
'output_mode': 'csv',
'count': '5'
}
r = requests.get(ENDPOINT + '/{0}/results' .format(sid),
data=data,
verify=False,
auth=(username, password))
os.system('echo "{0}" | hdfs dfs -put - {1}' .format(r.text,hdfs_path))
Я не совсем уверен, что означает count:5
в моемпоследний data
словарь.Могут ли запросы тянуть только определенное количество записей?Набор данных очень узкий (3 столбца), поэтому я не думаю, что это проблема с МБ.Может быть, но это не то, что здесь происходит.У меня гораздо больший запрос, который мне нужно выполнить позже, и поэтому я буду признателен за понимание размера или ограничений записей для запросов API.Если я запишу это в текстовый файл на linux, а не на hdfs, я все равно получу только 100 записей, поэтому я не думаю, что потоковая часть - это горлышко бутылки.