Используйте RegisterDeviceNotification () для ВСЕХ USB-устройств

Ваши данные не в формате CSV. CSV означает разделенный запятыми текстовый файл с фиксированной схемой. CSV для ваших данных будет выглядеть следующим образом:

abc,x1,x2,x3,,
def,x1,x3,x4,x8,x9
ghi,x7,x10,x11,,

Обратите внимание на запятые в строках 1 & amp; 3, которых нет в ваших данных.

Поскольку у вас есть текстовый файл, который не является CSV, способ получить нужную схему в Spark - это прочитать весь файл в Python, проанализировать то, что вы хотите, и затем использовать spark.crateDataFrame(). В качестве альтернативы, если у вас есть несколько таких файлов в каталоге, используйте SparkContext.wholeTextFiles, а затем flatMap свою функцию синтаксического анализа.

Если вы уже сделали что-то вроде open("Your File.txt").readlines, остальное просто:

import re
from pyspark.sql import *

lines = [
  "abc, x1, x2, x3",
  "def, x1, x3, x4,x8,x9",
  "ghi, x7, x10, x11"
]

split = re.compile("\s*,\s*")
Line = Row("id", "first", "rest")

def parse_line(id, line):
  tokens = split.split(line.strip)
  return Line(id, tokens[0], tokens.pop(0))

def parse_lines(lines):
  return [parse_line(i, x) for i,x in enumerate(lines)]

spark.createDataFrame(parse_lines(lines))
7
задан Adam Haile 16 April 2009 в 12:04
поделиться

2 ответа

Используется GUID_DEVINTERFACE_USB_DEVICE (в "usbiodef.h") для отслеживания всех USB-устройств.

  DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;
  ZeroMemory(&NotificationFilter, sizeof(NotificationFilter));

  NotificationFilter.dbcc_size = sizeof(NotificationFilter);
  NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
  NotificationFilter.dbcc_reserved = 0;

  NotificationFilter.dbcc_classguid = GUID_DEVINTERFACE_USB_DEVICE;

  HDEVNOTIFY hDevNotify = RegisterDeviceNotification(hwnd, &NotificationFilter, DEVICE_NOTIFY_SERVICE_HANDLE);
5
ответ дан 7 December 2019 в 01:26
поделиться

Вы пробовали GUID_DEVCLASS_USB ? (определено в devguid.h, Windows SDK)

Вы имели в виду флаг DEVICE_NOTIFY_ALL_INTERFACE_CLASSES ?

Кроме того, я нашел следующую статью полезной - она ​​посвящена GUID устройств против GUID интерфейсов:

http : //blogs.msdn.com/doronh/archive/2006/02/15/532679.aspx

5
ответ дан 7 December 2019 в 01:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: