这个问题是关于将任何非循环同构或异构数据结构集合转换为数据帧的通用机制.在处理许多JSON文档或使用大型字典数组的JSON文档时,这可能特别有用.
有迹象表明,与操纵深度嵌套的JSON结构和使用功能,比如将他们变成dataframes处理几个做题plyr,lapply等所有的我已经找到了问题和答案有关具体情况,而不是提供一个通用的方法来处理的集合复杂的JSON数据结构.
在Python和Ruby中,我通过实现通用数据结构展平实用程序得到了很好的服务,该实用程序使用数据结构中叶节点的路径作为展平数据结构中该节点的值的名称.例如,该值my_data[['x']][[2]][['y']]将显示为result[['x.2.y']].
如果有一个这些数据结构的集合可能不是完全同质的,那么成功展平到数据帧的关键是发现所有可能的数据帧列的名称,例如,通过采用所有键/名称的联合.单独展平的数据结构中的值.
这似乎是一个常见的模式,所以我想知道是否有人已经为R构建了这个.如果不是,我将构建它,但鉴于R的独特的基于承诺的数据结构,我很欣赏有关实现方法的建议最小化堆抖动.
当使用RSpec测试深层嵌套的数据结构时,我发现需要根据包含上下文中的主题在嵌套上下文中定义主题.我已经看了很多,但没有找到任何关于如何处理的例子而没有定义很多变量.它使规范复杂化并限制了规范重用的可能性.我很好奇是否有办法在RSpec中做到这一点,如果没有,那么什么是解决问题的好方法.
现在,我的代码看起来像:
context 'with a result which is a Hash' do
before do
@result = get_result()
end
subject { @result }
it { should be_a Hash }
context 'with an Array' do
before do
@array_elem = @result[special_key]
end
subject { @array_elem }
it { should be_an Array }
context 'that contains a Hash' do
before do
@nested_hash = ...
end
subject { @nested_hash }
...
end
end
end
Run Code Online (Sandbox Code Playgroud)
相反,我宁愿写下以下内容:
context 'with a result which is a Hash' do
subject { …Run Code Online (Sandbox Code Playgroud) 在迭代集合的索引值时,通常会在SO上看到以下代码:
for (i in 1:length(x)) {
# ...
}
Run Code Online (Sandbox Code Playgroud)
当集合为空时,代码行为异常,因为1:length(x)变为1:0赋予i值1和0.
iterate <- function(x) {
for (i in 1:length(x)) {
cat('x[[', i, ']] is', x[[i]], '\n')
}
}
> iterate(c(1,2,3))
x[[ 1 ]] is 1
x[[ 2 ]] is 2
x[[ 3 ]] is 3
> iterate(c())
x[[ 1 ]] is
x[[ 0 ]] is
Run Code Online (Sandbox Code Playgroud)
我记得看到一个优雅的习惯用于定义一个没有元素的序列,当它x是空的但我记不起来了.你用什么成语?
HiveQL(以及一般的SQL)中的常见查询构建模式是选择所有列(SELECT *)或显式指定的列(SELECT A, B, C).SQL没有内置机制来选择除指定的列集之外的所有列.
如本SO问题所述,有各种排除某些列的机制,但没有一种适用于HiveQL.(例如,创建一个临时表,SELECT *然后ALTER TABLE DROP使用其某些列的想法会在大数据环境中造成严重破坏.)
忽略关于选择除了一些列以外的所有列是否是一个好主意的意识形态讨论,这个问题是关于用这种能力扩展Hive的可能方法.
在Hive 0.13.0之前,SELECT可以采用基于正则表达式的列,例如,property_.*在反引号引用的字符串中.@ invoketheshell下面的答案指的是这个功能,但它是有代价的,即当启用此功能时,Hive不能接受其中包含非标准字符的列,例如,$foo或x/y.这就是Hive开发人员默认情况下在0.13.0中关闭此行为的原因.我正在寻找适用于任何列名称的通用解决方案.
生成通用表的UDF(UDTF)当然可以这样做,因为它可以操作模式.由于我们不打算生成新行,有没有办法使用简单的基于行的UDF解决这个问题?
这似乎是Web上许多帖子的常见问题,显示如何为各种数据库解决它,但我还没有找到Hive的解决方案.是否有代码可以执行此操作?
我需要使用Spark SQL或Dataframe API连接表.需要知道实现它的优化方式.
场景是:
实现这一目标的最佳方法是什么?如果有人遇到类似的问题,请分享您的经验.
有没有办法在没有来自Mongo shell的尾随换行符的情况下写入STDOUT?我似乎无法找到除print()可用之外的任何东西.
有没有办法从Mongo shell读取一行?readline()没有定义,也没有定义system.stdin.
我需要在交互模式下执行此操作,而不是将输入提供给MongoDB shell执行的脚本.
我正在寻找用于操纵data.table对象的模式,这些对象的结构类似于melt从reshape2包创建的数据帧的结构.我正在处理数百万行的数据表.表现至关重要.
问题的一般形式是是否存在基于列中的值的子集执行分组并且使分组操作的结果创建一个或多个新列的方法.
问题的一个特定形式可能是如何使用data.table以完成以下内容的等效dcast:
input <- data.table(
id=c(1, 1, 1, 2, 2, 2, 3, 3, 3, 3),
variable=c('x', 'y', 'y', 'x', 'y', 'y', 'x', 'x', 'y', 'other'),
value=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
dcast(input,
id ~ variable, sum,
subset=.(variable %in% c('x', 'y')))
Run Code Online (Sandbox Code Playgroud)
其输出是
id x y
1 1 1 5
2 2 4 11
3 3 15 9
Run Code Online (Sandbox Code Playgroud) 是否有任何的方式来捕捉壳输出(在PSQL变量)和/或从内部运行的外壳命令的退出代码psql使用\!?该文件没有提供细节.
我在纱线集群中运行我的火花应用程序.在我的代码中,我使用数量可用的队列核心来创建我的数据集上的分区:
Dataset ds = ...
ds.coalesce(config.getNumberOfCores());
Run Code Online (Sandbox Code Playgroud)
我的问题:如何通过编程方式而不是配置来获取队列的可用数量?
apache-spark ×3
r ×3
shell ×3
data.table ×2
dataframe ×2
javascript ×2
mongodb ×2
aggregation ×1
core ×1
dataset ×1
hadoop-yarn ×1
hive ×1
hiveql ×1
idioms ×1
iteration ×1
java ×1
json ×1
plyr ×1
postgresql ×1
psql ×1
readline ×1
reshape2 ×1
rspec ×1
rspec2 ×1
stdin ×1
stdout ×1
udf ×1
unit-testing ×1