我正在考虑用Javascript创建一个新的开源库来处理常见的数据格式转换,但我希望尽可能避免重新发明轮子.是否存在具有以下功能的现有库?
模块化加载器,用于读取不同数据格式的输入(例如XML,CSV,JSON,SQL转储,固定宽度文本,可能是某些二进制格式,自定义格式等)
数据加载到Javascript数据结构和应用的可选自定义转换函数
模块化输出器/发射器输出到不同的数据格式(如上所述)
我知道可以处理其中一些数据类型的各种库,但通常在特定环境或组合中,并且没有我想象的模块化输入/输出结构.
目前是否存在Javascript数据格式转换库?
我一直在寻找这个问题的解决方案。
在我看来,如果不依赖HDFS和Hadoop,就无法在Java程序中嵌入读写Parquet格式。它是否正确?
我想在Hadoop集群之外的客户端计算机上进行读写。
我开始对Apache Drill感到兴奋,但是看来它必须作为单独的进程运行。我需要的是一种使用Parquet格式读写文件的过程中功能。
我在 Linux 上安装了 RabbitMQ,它是一个很棒的软件。
当我运行这个命令时:
sudo rabbitmqctl status
Run Code Online (Sandbox Code Playgroud)
我得到一团糟的输出:
[{pid,18665},
{running_applications,
[{rabbitmq_management,"RabbitMQ Management Console","3.1.5"},
{rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.1.5"},
{webmachine,"webmachine","1.10.3-rmq3.1.5-gite9359c7"},
{mochiweb,"MochiMedia Web Server","2.7.0-rmq3.1.5-git680dba8"},
{rabbitmq_management_agent,"RabbitMQ Management Agent","3.1.5"},
{rabbit,"RabbitMQ","3.1.5"},
{os_mon,"CPO CXC 138 46","2.2.7"},
{inets,"INETS CXC 138 49","5.7.1"},
{xmerl,"XML parser","1.2.10"},
{mnesia,"MNESIA CXC 138 12","4.5"},
{amqp_client,"RabbitMQ AMQP Client","3.1.5"},
{sasl,"SASL CXC 138 11","2.1.10"},
{stdlib,"ERTS CXC 138 10","1.17.5"},
{kernel,"ERTS CXC 138 10","2.14.5"}]},
{os,{unix,linux}},
{erlang_version,
"Erlang R14B04 (erts-5.8.5) [source] [64-bit] [rq:1] [async-threads:30] [kernel-poll:true]\n"},
{memory,
[{total,179426464},
{connection_procs,300224},
{queue_procs,14434024},
{plugins,474968},
{other_proc,9607952},
{mnesia,89264},
{mgmt_db,1539936},
{msg_index,85175152},
{other_ets,29060560},
{binary,18243208},
{code,17504466},
{atom,1602617},
{other_system,1394093}]},
{vm_memory_high_watermark,0.4},
{vm_memory_limit,1522479923}, …Run Code Online (Sandbox Code Playgroud) 我正在集成两个记录不完善的系统,在这个过程中我遇到了一种我以前从未见过的奇怪的数据格式。它以纯文本形式存储在数据库中,没有指示格式是什么以及如何处理它。
\n\na:17:{s:2:"id";s:27:"145219921F990B11C39E7220000";s:16:"purchase_country";s:2:"no";s:17:"purchase_currency";s:3:"nok";s:6:"locale";s:5:"nb-no";s:6:"status";s:17:"checkout_complete";s:9:"reference";s:27:"145212221F990B11C39E7221000";s:11:"reservation";s:10:"2348226550";s:10:"started_at";s:25:"2014-04-04T10:40:55+02:00";s:12:"completed_at";s:25:"2014-04-02T10:41:11+02:00";s:16:"last_modified_at";s:25:"2014-04-02T10:41:11+02:00";s:10:"expires_at";s:25:"2014-04-16T10:41:11+02:00";s:4:"cart";a:4:{s:25:"total_price_excluding_tax";i:489500;s:16:"total_tax_amount";i:0;s:25:"total_price_including_tax";i:489500;s:5:"items";a:2:{i:0;a:10:{s:9:"reference";s:2:"68";s:4:"name";s:21:"1.OSO SUPER S 200LIT.";s:8:"quantity";i:1;s:10:"unit_price";i:695000;s:8:"tax_rate";i:0;s:13:"discount_rate";i:0;s:4:"type";s:8:"physical";s:25:"total_price_including_tax";i:695500;s:25:"total_price_excluding_tax";i:694000;s:16:"total_tax_amount";i:0;}i:1;a:10:{s:9:"reference";s:2:"68";s:4:"name";s:32:"1.OSO SUPER S 200LIT. (discount)";s:8:"quantity";i:1;s:10:"unit_price";i:-205100;s:8:"tax_rate";i:0;s:13:"discount_rate";i:0;s:4:"type";s:8:"physical";s:25:"total_price_including_tax";i:-205100;s:25:"total_price_excluding_tax";i:-205100;s:16:"total_tax_amount";i:0;}}}s:8:"customer";a:1:{s:4:"type";s:6:"person";}s:16:"shipping_address";a:8:{s:10:"given_name";s:13:"Testperson-no";s:11:"family_name";s:8:"Approved";s:14:"street_address";s:18:"S\xc3\xa6ffleberggate 56";s:11:"postal_code";s:4:"0563";s:4:"city";s:4:"OSLO";s:7:"country";s:2:"no";s:5:"email";s:32:"omitted@testdrive.klarna.com";s:5:"phone";s:11:"40 12 34 56";}s:15:"billing_address";a:8:{s:10:"given_name";s:13:"Testperson-no";s:11:"family_name";s:8:"Approved";s:14:"street_address";s:18:"S\xc3\xa6ffleberggate 56";s:11:"postal_code";s:4:"0563";s:4:"city";s:4:"OSLO";s:7:"country";s:2:"no";s:5:"email";s:32:"checkout-no@testdrive.klarna.com";s:5:"phone";s:11:"40 12 34 56";}s:7:"options";a:1:{s:31:"allow_separate_shipping_address";b:0;}s:8:"merchant";a:5:{s:2:"id";s:4:"1601";s:9:"terms_uri";s:95:"omitted";s:12:"checkout_uri";s:59:"omitted";s:16:"confirmation_uri";s:220:"omitted";s:8:"push_uri";s:229:"omitted";}} \nRun Code Online (Sandbox Code Playgroud)\n\n条目由冒号分隔的段组成:
\n\n;符,对于对象和数组来说似乎不是必需的,只是为了让解析变得更加乏味。现在,解析这个东西相当容易,但我总是对新的数据类型及其奇怪的语法感到惊讶,并且我不确定我是否已经用我的几个数据样本覆盖了所有边缘情况。已经分析过了。有人熟悉这种格式吗?
\n我有一个联系表格的网站.用户提交姓名,电子邮件和消息,该网站通过电子邮件向我发送详细信息.
有时我的服务器的电子邮件系统有问题,因此用户收到错误,这些联系人详细信息丢失了.(不要说:获得更好的服务器,任何服务器都可以随时关闭电子邮件,我们会收到很多提交的内容).
如果邮件发送功能返回错误代码,我想实现一个可以存储用户详细信息的系统.然后在每次进一步提交时,检查任何存储的提交并尝试将它们发送给我.
但是如何存储数据呢?
我正在使用python,所以我想到使用shelve(单文件半数据库).或者也许有人可以提出更好的数据格式?(我认为完整的数据库解决方案会有点过分.)
我用单一文件方法看到的问题是竞争条件:同时发生两个或多个失败的电子邮件会导致对数据文件进行两次编辑,从而导致数据损坏.
那么该怎么办?多文件解决方案,文件锁定或其他什么?
data-formats ×5
apache-drill ×1
dataformat ×1
email ×1
etl ×1
format ×1
hadoop ×1
java ×1
javascript ×1
parquet ×1
parsing ×1
python ×1
rabbitmq ×1
rabbitmqctl ×1