我们的新母公司LexisNexis拥有世界上最大的公共记录数据库之一:
“…我们从10,000多种不同来源(包括公共,私人,规范和衍生数据)中全面收集了460亿条记录。 您可以获得有关大约2.69亿个人和2.77亿个独立企业的全面信息。”
http://www.lexisnexis.com/en-us/products/public-records.page
他们几十年来一直在管理,分析和搜索该数据库。 在这段时间里,他们建立了各种各样的“大数据”技术。 LexisNexis将这些技术统称为高性能计算集群(HPCC)平台。
HPCC是完全开源的:
自然,我们正在努力将HPCC与我们的实时数据管理和分析堆栈结合起来。 潜力确实令人兴奋。 具体来说,HPCC具有完善的机器学习和统计信息库,以及能够提供这些统计信息的查询引擎(Roxie)。
低估了,HPCC可以将Cassandra用作后端存储机制! (FTW!)
MacCC在技术上不支持HPCC平台,但是这是我为使其运行而要做的事情:
HPCC安装
- 克隆github存储库及其子模块(git子模块更新–init –递归)
- 拉我的补丁( https://github.com/hpcc-systems/HPCC-Platform/pull/7166 )
- 使用brew安装依赖项
brew install icu4c brew install boost brew install libarchive brew install bison27 brew install openldap brew install nodejs
- 创建一个构建目录,然后从那里运行cmake:
export CC=/usr/bin/clang export CXX=/usr/bin/clang++ cmake ../ -DICU_LIBRARIES=/usr/local/opt/icu4c/lib/libicuuc.dylib -DICU_INCLUDE_DIR=/usr/local/opt/icu4c/include -DLIBARCHIVE_INCLUDE_DIR=/usr/local/opt/libarchive/include -DLIBARCHIVE_LIBRARIES=/usr/local/opt/libarchive/lib/libarchive.dylib -DBOOST_REGEX_LIBRARIES=/usr/local/opt/boost/lib -DBOOST_REGEX_INCLUDE_DIR=/usr/local/opt/boost/include -DUSE_OPENLDAP=true -DOPENLDAP_INCLUDE_DIR=/usr/local/opt/openldap/include -DOPENLDAP_LIBRARIES=/usr/local/opt/openldap/lib/libldap_r.dylib -DCLIENTTOOLS_ONLY=false -DPLATFORM=true
- 然后,使用(sudo make install)进行编译和安装
- 之后,您需要考虑一下权限:
chmod -R a+rwx /opt/HPCCSystems/ chmod -R a+rwx /var/lock/HPCCSystems chmod -R a+rwx /var/log/HPCCSystems
- 现在,通常,您将运行hpcc-init来配置系统,但是该脚本在OS X上失败,因此我使用linux生成了可以运行的配置文件,并将其发布到此处的存储库中: https : //github.com/boneill42 / hpcc_on_mac
- 克隆此存储库,并用var_lib_hpccsystems.zip的内容替换/ var / lib / HPCCSystems
sudo rm -fr /var/lib/HPCCSystems sudo unzip var_lib_hpccsystems.zip -d /var/lib chmod -R a+rwx /var/lib/HPCCSystems
- 然后,从该存储库中包含xml文件的目录中,可以运行:
- daserver :(运行Dali服务器,这是HPCC的持久性机制)
- esp :(运行ESP服务器,这是HPCC的Web服务和UI层)
- eclccserver :(运行ECL编译服务器,该服务器接受ECL并将其编译为C,然后编译为动态库)
- roxie (运行能够响应查询的Roxie服务器)
- 启动其中的每一个,那么您应该准备运行一些ECL。 然后,在浏览器中转到http:// localhost:8010 。 您已经准备好运行一些ECL!
运行ECL
像带Hadoop的Pig一样,HPCC运行称为ECL的DSL。 可以在以下位置找到有关ECL的更多信息: http : //hpccsystems.com/download/docs/learning-ecl
- 作为一个简单的冒烟测试,进入HPCC-Platform存储库,然后进入:./testing/regress/ecl。
- 然后,运行以下命令:
ecl run hello.ecl --target roxie --server=localhost:8010
- 您应该看到以下内容:
<dataset name="Result 1"> <row><result_1>Hello world</result_1></row> </dataset>
Cassandra插件
随着HPCC的启动和运行,我们准备与Cassandra一起玩乐。 HPCC具有插件。 这些插件位于/ opt / HPCC / plugins中。 对我来说,我必须将这些库复制到/ opt / HPCCSystems / lib中,以使HPCC能够识别它们。
返回至test / regress / ecl目录,并查看cassandra-simple.ecl。 片段如下所示:
childrec := RECORD string name, integer4 value { default(99999) }, boolean boolval { default(true) }, real8 r8 {default(99.99)}, real4 r4 {default(999.99)}, DATA d {default (D'999999')}, DECIMAL10_2 ddd {default(9.99)}, UTF8 u1 {default(U'9999 ß')}, UNICODE u2 {default(U'9999 ßßßß')}, STRING a, SET OF STRING set1, SET OF INTEGER4 list1, LINKCOUNTED DICTIONARY(maprec) map1{linkcounted}; END; init := DATASET([{'name1', 1, true, 1.2, 3.4, D'aa55aa55', 1234567.89, U'Straße', U'Straße','Ascii',['one','two','two','three'],[5,4,4,3],[{'a'=>'apple'},{'b'=>'banana'}]}, {'name2', 2, false, 5.6, 7.8, D'00', -1234567.89, U'là', U'là','Ascii', [],[],[]}], childrec); load(dataset(childrec) values) := EMBED(cassandra : user('boneill'),keyspace('test'),batch('unlogged')) INSERT INTO tbl1 (name, value, boolval, r8, r4,d,ddd,u1,u2,a,set1,list1,map1) values (?,?,?,?,?,?,?,?,?,?,?,?,?); ENDEMBED;
在此示例中,我们将childrec定义为具有一组字段的RECORD。 然后,我们创建一个childrec类型的DATASET。 然后,我们定义一个方法,该方法采用childrec类型的数据集,并对数据集中的每个记录运行Cassandra插入命令。
在本地启动Cassandra。 (下载Cassandra,解压缩,然后运行bin / cassandra -f(将其保留在前台))
Cassandra启动后,只需像执行hello程序一样运行ECL。
ecl run cassandra-simple.ecl --target roxie --server=localhost:8010
然后,您可以转到cqlsh并验证所有数据是否都将其返回到Cassandra中:
➜ cassandra bin/cqlsh Connected to Test Cluster at localhost:9160. [cqlsh 4.1.1 | Cassandra 2.0.7 | CQL spec 3.1.1 | Thrift protocol 19.39.0] Use HELP for help. cqlsh> select * from test.tbl1 limit 5; name | a | boolval | d | ddd | list1 | map1 | r4 | r8 | set1 | u1 | u2 | value -----------+---+---------+----------------+------+-------+------+--------+--------+------+ name1575 | | True | 0x393939393939 | 9.99 | null | null | 1576.6 | 1575 | null | 9999 ß | 9999 ßßßß | 1575 name3859 | | True | 0x393939393939 | 9.99 | null | null | 3862.9 | 3859 | null | 9999 ß | 9999 ßßßß | 3859 name11043 | | True | 0x393939393939 | 9.99 | null | null | 11054 | 11043 | null | 9999 ß | 9999 ßßßß | 11043 name3215 | | True | 0x393939393939 | 9.99 | null | null | 3218.2 | 3215 | null | 9999 ß | 9999 ßßßß | 3215 name7608 | | False | 0x393939393939 | 9.99 | null | null | 7615.6 | 7608.1 | null | 9999 ß | 9999 ßßßß | 7608
好的,那会给您一些ECL和HPCC的味道。 这是一个强大的平台。
一如既往,让我知道您是否遇到任何麻烦。