问题标签 [thrift]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 我如何从 cassandra 超级列中访问最近的 10 个值
我如何从 cassandra 访问最近的 10 个值。我需要从特定的超级列中获取最近的值。我得到了结果,但是没有正确排序。我需要按降序对结果进行排序(最新的首先基于列名/时间戳)
php - 如何从cassandra中的特定列中检索最大值?
如何从 Cassandra 的特定列中检索最大值?我将标签名称存储为名称,并将点击次数存储为 Cassandra 中的值。现在我需要找出最受欢迎的标签(基于点击)?请帮我
例子 :
超列:电影列名:“矩阵”值:10(点击次数)
超列:电影列名:“泰坦尼克号”值:0(点击次数)
超列:电影列名:“头像”值:5(点击次数)
现在我需要分别得到矩阵、头像和泰坦尼克号的结果(基于值 desc)
javascript - 是否有适用于 Node.js/JavaScript 的 Thrift 或 Cassandra 客户端
我想开始在 node.js 部署中使用 Cassandra,但我找不到适用于 Node.js 和/或 JavaScript 的 Thrift 或 Cassandra 客户端。
有吗?
是否有生成 Thrift 连接的简单方法?
更新:这个问题的简短回答结果是否定的,没有与 Cassandra 兼容的 Thrift JS 客户端。
进一步更新: Cassandra 的下一个版本(撰写本文时为 0.8)将支持Avro API。已经有用于 Avro 支持的 node.js 模块。
javascript - Thrift JS 与 Cassandra(JSON 协议)的兼容性
我已经从 SVN 中的最新 Thrift 构建中为 Cassandra 生成了一个 Thrift 库,该库针对 JavaScript。
但是,我在提供的 js thrift 客户端库中注意到以下语句:
此客户端只能使用 JSON 协议,并且唯一支持的传输是 AJAX。
有谁知道 JSON 协议是否与 Cassandra 兼容?
传输不是问题,因为我计划将其移植到使用 node.js 套接字,但我需要知道 JSON 协议是否允许我与 Cassandra 连接。
Thrift 和 Cassandra 文档在这方面都非常轻松。
protocol-buffers - Apache thrift,结构包含自身
我正在研究节俭的数据序列化。但文件说
循环结构 - 结构只能包含在它之前声明的结构。结构也不能包含自身
我们的要求之一是
- 结构 A
- 子项列表
- 项目(项目是 Struct A )
- 子项列表
所以阅读要求我不能在任何层面上都有自己的结构?我可以像上面那样在循环模型中使用它吗?Struct 不是 Struct 的直接成员,但它有一些其他成员并且它包含结构。
他们的文件描述性不是很好。
在 Thrift 中可以吗?protobuf 支持吗?
nosql - Cassandra 随机读取速度
我们仍在为我们的数据存储评估 Cassandra。作为一个非常简单的测试,我在本地机器上的 Keyspace1/Standard1 列族中插入了 4 列的值,总计大约 100 字节的数据。然后我用行键尽可能快地读回来。我可以以 160,000/秒的速度读回它。伟大的。
然后我放入一百万个类似的记录,所有的键都以 XY 的形式出现,其中 X 在 (1..10) 中,Y 在 (1..100,000) 中,我查询了一条随机记录。性能下降到每秒 26,000 个查询。这仍然远高于我们需要支持的查询数量(大约 1,500/秒)
最后,我从 1.1 到 10.1000000 放入一千万条记录,并随机查询这 1000 万条记录中的一条。每秒 60 个查询的性能非常糟糕,我的磁盘像疯了一样颠簸。
我还验证了,如果我要求数据的子集,比如 3,000,000 到 3,001,000 之间的 1,000 条记录,它首先会缓慢返回,然后当它们缓存时,它的速度会高达每秒 20,000 次查询,并且我的磁盘不再发疯。
我读到过,人们在 Cassandra 中存储了数十亿条记录,并以每秒 5-6k 的速度获取它们,但只有 1000 万条记录,我无法接近这一点。知道我做错了什么吗?我需要更改默认设置吗?我在一个带有 6gigs ram 的超频 Core i7 盒子上,所以我不认为它是机器。
这是我获取记录的代码,我将这些记录生成到 8 个线程中,以通过行键从一列中请求一个值:
ColumnPath cp = new ColumnPath(); cp.Column_family = "标准1"; cp.Column = utf8Encoding.GetBytes("site"); 字符串键 = (1+sRand.Next(9)) + "." + (1+sRand.Next(1000000)); ColumnOrSuperColumn logline = client.get("Keyspace1", key, cp, ConsistencyLevel.ONE);
感谢您的任何见解
c++ - 更改节俭文件后的 C++ 链接器错误
我认为这与 C++ 链接器错误有关,而不是与节俭有关。我对 thrift 文件进行了更改并重新生成了 cpp 和 java 类。进行此更改后,我开始在 cpp 中收到链接器错误。这是错误
未定义的符号:
"com::XXXX::thrift::employee::SavingsInfo::operator<(com::XXXX::thrift::employee::SavingsInfo const&) const", referenced from:
std::less::operator()(com::XXXX::thrift::employee::SavingsInfo const&, com::XXXX::thrift::employee::SavingsInfo const&) constin employee_types.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [ThriftCPPSamples] Error 1
我在 thrift 文件中添加了 SavingsInfo 类型,这是我所做的更改。我将文档中提到的所有选项都提供给 g++。我给了-I/usr/local/include/thrift
,
-I/path-to-boost
, -L/path-to-boost-lib
, -lthrift
. 但是在更改之后,我开始收到上述链接器错误。我无法理解这其中的原因。该错误指向thrift 生成的某些内容。错误的原因可能是什么?
这个错误是关于“operator <”的,所以我只发布与之相关的代码。完整的代码可从最后提供的两个链接中获得。
员工类型.h
员工类型.cpp
我尝试过的其他几件事:
- 如果我使用 SavingsInfo,而不是 set<SavingsInfo>,它可以正常工作。
- 在employee_types.h 中评论了“operator <”,因为我不知道它在哪里被使用。我收到以下构建错误
Building file: ../src/employee_types.cpp
Invoking: GCC C++ Compiler
g++ -I/usr/local/include/thrift -I/Users/raghava/Software/Boost_C++_Library/boost_1_43_0 -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/employee_types.d" -MT"src/employee_types.d" -o"src/employee_types.o" "../src/employee_types.cpp"
/usr/include/c++/4.2.1/bits/stl_function.h: In member function 'bool std::less<_Tp>::operator()(const _Tp&, const _Tp&) const [with _Tp = com::xxxx::thrift::employee::SavingsInfo]':
/usr/include/c++/4.2.1/bits/stl_tree.h:982: instantiated from 'std::pair::iterator, bool> std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_insert_unique(const _Val&) [with _Key = com::xxxx::thrift::employee::SavingsInfo, _Val = com::xxxx::thrift::employee::SavingsInfo, _KeyOfValue = std::_Identity, _Compare = std::less, _Alloc = std::allocator]'
/usr/include/c++/4.2.1/bits/stl_set.h:307: instantiated from 'std::pair, _Compare, typename _Alloc::rebind<_Key>::other>::const_iterator, bool> std::set<_Key, _Compare, _Alloc>::insert(const _Key&) [with _Key = com::xxxx::thrift::employee::SavingsInfo, _Compare = std::less, _Alloc = std::allocator]'
../src/employee_types.cpp:163: instantiated from here
/usr/include/c++/4.2.1/bits/stl_function.h:227: error: no match for 'operator<' in '__x < __y'
make: *** [src/employee_types.o] Error 1
这两个文件的完整源代码在下面的链接中给出。另一个链接在评论中(在我获得 10 分的声誉之前我不能发布它)。
employee_types.cpp -- http://pastebin.com/7dLtstCK
employee_types.h -- http://pastebin.com/JGzE8V6J
谢谢你。
问候,拉格哈瓦。
mapreduce - 通过 Pig 提交 map/reduce 作业时捆绑 jars?
我正在尝试将 Hadoop、Pig 和 Cassandra 结合起来,以便能够通过简单的 Pig 查询来处理存储在 Cassandra 中的数据。问题是我无法让 Pig 创建实际使用 CassandraStorage 的 Map/Reduce 作业。
我所做的是从我的一台集群机器上复制了 storage-conf.xml 文件到 contrib/pig(Cassandra 的源发行版)中的一台机器上,然后将这些东西编译到 cassandra_loadfun.jar 文件中。
接下来,我调整了 example-script.pig 以包含所有 jar:
因此,如果我没记错的话,应该将 jar 包捆绑到提交给 hadoop 的作业中。但是在运行这项工作时,它只会向我抛出一个异常:
我不明白,因为 thrift 库已明确列出,并且应该捆绑在一起,不是吗?
c++ - TNonblockingServer、TThreadedServer 和 TThreadPoolServer,哪一个最适合我的情况?
我们的分析服务器是用 C++ 编写的。它基本上查询底层存储引擎并通过thrift返回相当大的结构化数据。一个典型的请求大约需要 0.05 到 0.6 秒才能完成,具体取决于请求的大小。
我注意到我们可以在 c++ 代码中使用的 Thrift 服务器有几个选项,特别是 TNonblockingServer、TThreadedServer 和 TThreadPoolServer。似乎 TNonblockingServer 是要走的路,因为它可以支持更多的并发请求,并且仍然在后台使用线程池来处理任务。它还避免了构建/破坏线程的成本。
Facebook 关于节俭的更新:http: //www.facebook.com/note.php? note_id=16787213919
在 Facebook,我们正在为 C++ 开发一个完全异步的客户端和服务器。这个服务器像当前的 TNonblockingServer 一样使用事件驱动的 I/O,但它与应用程序代码的接口都是基于异步回调的。这将允许我们编写可以服务数千个并发请求的服务器(每个请求都需要调用其他 Thrift 或 Memcache 服务器),而只需几个线程。
stackover 上的相关帖子:thrift 中的大量同时连接
话虽如此,您不一定能够真正更快地完成工作(处理程序仍然在线程池中执行),但更多的客户端将能够一次连接到您。
只是想知道我在这里还缺少其他因素吗?我该如何决定哪一个最适合我的需求?
cross-platform - 我应该使用 CORBA、MessagePack RPC 或 Thrift,还是完全使用其他东西?
我正在为一种新的硬件设备编写软件,我希望任何一种新的第三方应用程序都能够访问,如果他们愿意的话。
该软件将是一个本机进程 (C++),应该可以被想要支持硬件设备的 3rd 方游戏和应用程序轮询。这些第 3 方应用程序还应该能够在订阅的基础上接收来自本机进程的事件。因此,除了本机进程之外,我还将为第 3 方开发人员提供“连接器”库,用于他们可能选择的所有平台/语言(Java、C++、Python 等)嵌入到他们的应用程序中,以便他们可以轻松连接到设备几乎不需要他们编写任何额外的代码。我想针对所有台式机/笔记本电脑操作系统平台,并且对我想要公开的功能有一个很好的了解,但理想情况下我不想太卡住(即我希望它可以从客户端和服务器优雅地扩展观点)。
我正在寻找未来的可靠性、性能、可维护性和跨平台/语言的灵活性,以及易于开发,按此顺序。
我应该使用什么?
CORBA、MessagePack-RPC、Thrift 还是其他什么?
(由于它的许可,我省略了 ICE)