Предел вывода при использовании запросов API для извлечения данных Splunk в HDFS - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь 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 записей, поэтому я не думаю, что потоковая часть - это горлышко бутылки.

1 Ответ

0 голосов
/ 12 октября 2018

Конечная точка REST Splunk для получения результатов поиска может быть найдена здесь

Параметр count - это максимальное количество результатов, которое нужно вернуть.Если значение установлено в 0, то возвращаются все доступные результаты, в противном случае используется значение по умолчанию 100.

Попробуйте еще раз свой код, на этот раз с count установлено 0

data = {
  'output_mode': 'csv',
  'count': '0'
}
...