问题标签 [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.

0 投票
1 回答
738 浏览

php - 我如何从 cassandra 超级列中访问最近的 10 个值

我如何从 cassandra 访问最近的 10 个值。我需要从特定的超级列中获取最近的值。我得到了结果,但是没有正确排序。我需要按降序对结果进行排序(最新的首先基于列名/时间戳)

0 投票
1 回答
217 浏览

php - 如何从cassandra中的特定列中检索最大值?

如何从 Cassandra 的特定列中检索最大值?我将标签名称存储为名称,并将点击次数存储为 Cassandra 中的值。现在我需要找出最受欢迎的标签(基于点击)?请帮我

例子 :

  1. 超列:电影列名:“矩阵”值:10(点击次数)

  2. 超列:电影列名:“泰坦尼克号”值:0(点击次数)

  3. 超列:电影列名:“头像”值:5(点击次数)

现在我需要分别得到矩阵、头像和泰坦尼克号的结果(基于值 desc)

0 投票
4 回答
9283 浏览

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 模块。

0 投票
2 回答
1660 浏览

javascript - Thrift JS 与 Cassandra(JSON 协议)的兼容性

我已经从 SVN 中的最新 Thrift 构建中为 Cassandra 生成了一个 Thrift 库,该库针对 JavaScript。

但是,我在提供的 js thrift 客户端库中注意到以下语句:

此客户端只能使用 JSON 协议,并且唯一支持的传输是 AJAX。

有谁知道 JSON 协议是否与 Cassandra 兼容?

传输不是问题,因为我计划将其移植到使用 node.js 套接字,但我需要知道 JSON 协议是否允许我与 Cassandra 连接。

Thrift 和 Cassandra 文档在这方面都非常轻松。

0 投票
2 回答
1445 浏览

protocol-buffers - Apache thrift,结构包含自身

我正在研究节俭的数据序列化。但文件说

循环结构 - 结构只能包含在它之前声明的结构。结构也不能包含自身

我们的要求之一是

  • 结构 A
    • 子项列表
      • 项目(项目是 Struct A )

所以阅读要求我不能在任何层面上都有自己的结构?我可以像上面那样在循环模型中使用它吗?Struct 不是 Struct 的直接成员,但它有一些其他成员并且它包含结构。

他们的文件描述性不是很好。

在 Thrift 中可以吗?protobuf 支持吗?

0 投票
4 回答
5814 浏览

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);

感谢您的任何见解

0 投票
0 回答
1378 浏览

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

我尝试过的其他几件事:

  1. 如果我使用 SavingsInfo,而不是 set<SavingsInfo>,它​​可以正常工作。
  2. 在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

谢谢你。

问候,拉格哈瓦。

0 投票
1 回答
3246 浏览

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 库已明确列出,并且应该捆绑在一起,不是吗?

0 投票
2 回答
12350 浏览

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 中的大量同时连接

话虽如此,您不一定能够真正更快地完成工作(处理程序仍然在线程池中执行),但更多的客户端将能够一次连接到您。

只是想知道我在这里还缺少其他因素吗?我该如何决定哪一个最适合我的需求?

0 投票
4 回答
5579 浏览

cross-platform - 我应该使用 CORBA、MessagePack RPC 或 Thrift,还是完全使用其他东西?

我正在为一种新的硬件设备编写软件,我希望任何一种新的第三方应用程序都能够访问,如果他们愿意的话。

该软件将是一个本机进程 (C++),应该可以被想要支持硬件设备的 3rd 方游戏和应用程序轮询。这些第 3 方应用程序还应该能够在订阅的基础上接收来自本机进程的事件。因此,除了本机进程之外,我还将为第 3 方开发人员提供“连接器”库,用于他们可能选择的所有平台/语言(Java、C++、Python 等)嵌入到他们的应用程序中,以便他们可以轻松连接到设备几乎不需要他们编写任何额外的代码。我想针对所有台式机/笔记本电脑操作系统平台,并且对我想要公开的功能有一个很好的了解,但理想情况下我不想太卡住(即我希望它可以从客户端和服务器优雅地扩展观点)。

我正在寻找未来的可靠性、性能、可维护性和跨平台/语言的灵活性,以及​​易于开发,按此顺序。

我应该使用什么?

CORBA、MessagePack-RPC、Thrift 还是其他什么?

(由于它的许可,我省略了 ICE)