hadoop 将XML文件转换为表[已关闭]

esyap4oy  于 12个月前  发布在  Hadoop
关注(0)|答案(1)|浏览(288)

**已关闭。**此问题不符合Stack Overflow guidelines。目前不接受答复。

这个问题似乎不是关于在help center定义的范围内编程。
26分钟前关闭
Improve this question
我们正试图找到一种有效地将XML文件转换为表的方法,以便我们可以轻松地进行一些分析。
样本数据:

<?xml version="1.0" encoding="UTF-8"?>
<SSNExportDocument xmlns="urn:com:ssn:schema:export:SSNExportFormat.xsd" Version="0.1"
    DocumentID="59e59e58-caae-40d0-8da6-b3ffd7e61ba0" JobID="69135463" RunID="89312349"
    CreationTime="2023-05-15T01:02:06..959+08:00" StartTime="2023-05-08T00:00:00.000+08:00"
    EndTime="2023-05-14T00:00:00.000+08:00">

    <DeviceData Name="???" UtilDeviceID="???" MacID="???">
        <IntervalReadData EndTime="2023-05-25T00:00:00.000+08:00"></IntervalReadData>
        <EventData StartTime="2023-05-08T00:00:00.000+08:00" EndTime="2023-05-14T00:00:00.000+08:00"
            NumberEvents="1">
            <Event EventTime="2023-05-12T15:16:29.000+08:00">XXXXX</Event>
        </EventData>
    </DeviceData>
    <DeviceData Name="???" UtilDeviceID="???" MacID="???">
        <IntervalReadData EndTime="2023-05-25T00:00:00.000+08:00"></IntervalReadData>
        <EventData StartTime="2023-05-08T00:00:00.000+08:00" EndTime="2023-05-14T00:00:00.000+08:00"
            NumberEvents="1">
            <Event EventTime="2023-05-12T15:16:29.000+08:00">XXXXXX</Event>
        </EventData>
    </DeviceData>
</SSNExportDocument>

如您所见,每个设备都可以有许多事件记录。此外,由于文件是定期导出的,因此同一设备可能会出现在不同的xml文件中。
由于数据量很大,可扩展性是主要问题。我们最初想使用脚本来处理文件并将数据发送到SQL数据库,但它太慢了。有任何改进建议吗?
我们感兴趣的分析的一个例子是“哪些设备产生最无效的数据”。
Hadoop和hive看起来是一个不错的选择,但不知道如何将xmlMap到hive表。

5us2dqdw

5us2dqdw1#

CREATE TABLE SSNExportDocument (
  DocumentID INT NOT NULL,
  JobID INT NOT NULL,
  RunID INT NOT NULL,
  CreationTime DATETIME NOT NULL,
  StartTime DATETIME NOT NULL,
  EndTime DATETIME NOT NULL,
  DeviceData VARCHAR(255) NOT NULL,
  UtilDeviceID VARCHAR(255) NOT NULL,
  MacID VARCHAR(255) NOT NULL,
  IntervalReadData VARCHAR(255) NOT NULL,
  EventData VARCHAR(255) NOT NULL,
  NumberEvents INT NOT NULL,
  Event VARCHAR(255) NOT NULL
);

BULK INSERT SSNExportDocument
FROM '/path/to/file.xml'
WITH (
  FORMAT = 'XML',
  FIELDTERMINATOR = ' ',
  ROWTERMINATOR = '\n'
);

相关问题