- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Azure 数据工厂 - 数据流与数据争论 - 数组错误。
我有一个棘手的防火墙日志文件要使用 Azure 数据工厂处理。该文件由 4 个制表符分隔的列组成。日期和时间、来源、IP 和数据。
数据列由用等号分隔的键值对和用双引号分隔的文本组成。挑战在于数据列不一致并且包含任意数量的键值对组合。
源文件中的三行。
2022-02-13 00:59:59 Local7.Notice 192.168.40.1 date=2022-02-13 time=00:59:59 devname="NoHouse" devid="FG100ETK18006624" eventtime=1644706798637882880 tz="+0200" logid="0000000013" type="traffic" subtype="forward" level="notice" vd="root" srcip=192.168.41.200 srcport=58492 srcintf="port1" srcintfrole="undefined" dstip=216.239.36.55 dstport=443 dstintf="wan1" dstintfrole="undefined" srccountry="Reserved" dstcountry="United States" sessionid=137088638 proto=6 action="client-rst" policyid=5 policytype="policy" poluuid="c2a960c4-ac1b-51e6-8011-6f00cb1fddf2" policyname="All LAN over WAN1" service="HTTPS" trandisp="snat" transip=196.213.203.122 transport=58492 appcat="unknown" applist="block-p2p" duration=6 sentbyte=3222 rcvdbyte=1635 sentpkt=14 rcvdpkt=8 srchwvendor="Microsoft" devtype="Computer" osname="Debian" mastersrcmac="00:15:5d:29:b4:06" srcmac="00:15:5d:29:b4:06" srcserver=0
2022-02-13 00:59:59 Local7.Notice 192.168.40.1 date=2022-02-13 time=00:59:59 devname="NoHouse" devid="FG100ETK18006624" eventtime=1644706798657887422 tz="+0200" logid="0000000013" type="traffic" subtype="forward" level="notice" vd="root" srcip=192.168.41.200 srcport=58496 srcintf="port1" srcintfrole="undefined" dstip=216.239.36.55 dstport=443 dstintf="wan1" dstintfrole="undefined" srccountry="Reserved" dstcountry="United States" sessionid=137088640 proto=6 action="client-rst" policyid=5 policytype="policy" poluuid="c2a960c4-ac1b-51e6-8011-6f00cb1fddf2" policyname="All LAN over WAN1" service="HTTPS" trandisp="snat" transip=196.213.203.122 transport=58496 appcat="unknown" applist="block-p2p" duration=6 sentbyte=3410 rcvdbyte=1791 sentpkt=19 rcvdpkt=11 srchwvendor="Microsoft" devtype="Computer" osname="Debian" mastersrcmac="00:15:5d:29:b4:06" srcmac="00:15:5d:29:b4:06" srcserver=0
2022-02-13 00:59:59 Local7.Notice 192.168.40.1 date=2022-02-13 time=00:59:59 devname="NoHouse" devid="FG100ETK18006624" eventtime=1644706798670487613 tz="+0200" logid="0001000014" type="traffic" subtype="local" level="notice" vd="root" srcip=192.168.41.180 srcname="GKHYPERV01" srcport=138 srcintf="port1" srcintfrole="undefined" dstip=192.168.41.255 dstport=138 dstintf="root" dstintfrole="undefined" srccountry="Reserved" dstcountry="Reserved" sessionid=137088708 proto=17 action="deny" policyid=0 policytype="local-in-policy" service="udp/138" trandisp="noop" app="netbios forward" duration=0 sentbyte=0 rcvdbyte=0 sentpkt=0 rcvdpkt=0 appcat="unscanned" srchwvendor="Intel" osname="Windows" srcswversion="10 / 2016" mastersrcmac="a0:36:9f:9b:de:b6" srcmac="a0:36:9f:9b:de:b6" srcserver=0
我处理这个数据集的策略如下。
使用制表符分隔的 CSV 从 Azure 数据湖获取数据文件数据集。这成功地提供了四列的源数据到我的数据流。
添加代理键转换以向每行数据添加递增键值。
添加派生列,具有以下功能。
regexSplit(Column_4,'\s(?=(?:[^"](["])[^"]\1)[^"]$)' )这将按空格拆分数据,忽略分号之间的空格。
然后展开为数组中的每个项目创建一个新记录,同时保留其他列值。
展开(SplitBySpace)
然后通过分隔符 equals 将键值对拆分为它们表示的值和键。
然后,最后一步是将数据反透视回列,其中受尊重的值按步骤 2 中添加的代理键分组。
这一切听起来不错,但不幸的是第 5 步失败并出现以下错误。 “索引只允许在数组和映射类型上使用”。
第 4 步后的输出。
unfold 函数根据 inspect 选项卡返回一个数组,见下文。我希望这里有一个字符串!!
现在在第 5 步中,我使用表达式 split(unfoldSplitBySpace, '=') 按“=”进行拆分,但这在表达式生成器中出现错误并显示消息“Split expect string type of argument”
将表达式更改为 split(unfoldSplitBySpace 1 , '=') 从表达式生成器中删除错误。
然后 spark 执行引擎出现错误“索引只允许在数组和映射类型上”
问题。
根据 Azure 数据工厂 UI,Unfold() 函数的输出是数组类型,但在访问数组元素或任何其他函数时,Spark 引擎无法将对象识别为数组类型。
这是执行中的错误还是我对数据工厂和 Spark 引擎如何理解数组的理解有问题?
最佳答案
Split()函数根据分隔符将字符串拆分为多个值并返回数组类型。
如果要拆分特定索引数组的值,请在大括号 [] 中提及索引。
示例:
这里我有一个数组值 ["employee=Robert", "D"],并使用 split(),我拆分索引值 1基于 =
.
split(value[1], '=')
关于azure-data-factory - Azure 数据工厂 - 数据流与数据争论 - 数组错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72347346/
我有这样一个受歧视的工会: type A = |B | C of int*A 我必须像这样进行模式匹配(括号似乎是必需的): match x with | B -> printfn "B" | C (
panic!(arg) 发出后如何收集 arg? This文档不明确。 当执行 panic!(42) 时,我希望我的应用程序收集 42 并优雅地失败,而不仅仅是中止。 最佳答案 为了收集论点,向下转换
所以,我已经使用 HP 媒体中心一段时间了,只有大约 4 GB 的 RAM,所以,当然,我运行的是 32 位 Windows 7。我一直尝试运行一个使用java虚拟机,我可以使用jvm争论它,但是,我
我有以下 IDL 接口(interface): interface ItemA : Item { void actionA(in float a, out long b); }; 在
hamcrest库中有一个方法: package org.hamcrest.core ... public static Matcher allOf(Matcher first, Matcher s
我有一个格式为 numpy.timedelta(64) 的时间增量:value = numpy.timedelta64(30,'m') (此处为 30 分钟)。 有没有办法将该值传递给 pandas
我是一名优秀的程序员,十分优秀!