小编men*_*h84的帖子

MongoDB索引和投影

我有几个关于MongoDB的问题:

(1)索引是否有助于投影?

(2)我已经为一个集合分配了许多索引,并尝试使用sort运行查找,然后使用explain,它BtreeCursor在排序字段上显示索引.

可能是其他索引在查询部分中有所帮助,explain只是没有显示它,因为它只显示了帮助查找的最后一个索引?

或者explain应该显示有助于查询,排序等的所有索引?

谢谢.

mongodb mongodb-indexes

3
推荐指数
1
解决办法
1775
查看次数

从 Hive 外部表中删除行

我有一个从 CSV 文件列表创建的 Hive 外部表。

如果我对表行(或多行)执行 Hive 删除,相应的 CSV 记录也会被删除吗?

csv hive

3
推荐指数
1
解决办法
1万
查看次数

绕过Spark(Scala)中每个文件的第一行

我在Spark中处理包含csv.gz文件的S3文件夹.每个csv.gz文件都有一个包含列名的标头.

我将包含的数据加载到Spark的方式是引用路径/文件夹,如下所示:

val rdd = sc.textFile("s3://.../my-s3-path")
Run Code Online (Sandbox Code Playgroud)

如何跳过每个文件中的标题,以便我只能处理这些值?

谢谢

scala amazon-s3 apache-spark

3
推荐指数
1
解决办法
1102
查看次数

从两个向量构建混淆矩阵

我需要定义一个生成混淆矩阵的函数。所以我有两个向量y_labely_predict,它们的元素值为 0、1、2。该函数的目标是创建标签计数:

  | 0 | 1 | 2 |
--------------
0 |   |   |   |
--------------
1 |   |   |   |
--------------
2 |   |   |   |
--------------
Run Code Online (Sandbox Code Playgroud)

例如,cm[0,1]对于每个 i ,应该包含 y_label[i] = 0 和 y_predict[i] = 1 的元素计数。

到目前为止,这就是我所做的:

def get_confusion_matrix(y_label, y_fit):

    cm = np.ndarray([3,3])

    for i in range(3):
        for j in range(3):
            cm[i, j] = ....

    return cm
Run Code Online (Sandbox Code Playgroud)

当然,我可以轻松地进行多级for循环来计数,但是如果 Python / numpy 中有捷径,我想避免这种情况。

我也在考虑制作y_labely_predict合并成为一个元组数组,然后使用 dict-zip 技术,类似于这里: …

python numpy

3
推荐指数
2
解决办法
4082
查看次数

Pandas - 自上次交易以来的计数

我有一个txn_df包含货币交易记录的数据框(称之为),这里是这个问题中的重要列:

txn_year    txn_month   custid  withdraw    deposit
2011        4           123     0.0         100.0
2011        5           123     0.0         0.0
2011        6           123     0.0         0.0
2011        7           123     50.1        0.0
2011        8           123     0.0         0.0
Run Code Online (Sandbox Code Playgroud)

还假设我们在这里有多个客户。withdrawdeposit0.0 值意味着没有交易发生。我想要做的是生成一个新列,指示自发生交易以来已经发生了多少个月。类似的东西:

txn_year    txn_month   custid  withdraw    deposit     num_months_since_last_txn
2011        4           123     0.0         100.0       0
2011        5           123     0.0         0.0         1
2011        6           123     0.0         0.0         2           
2011        7           123     50.1        0.0         3
2011        8           123     0.0         0.0         1
Run Code Online (Sandbox Code Playgroud)

唯一的解决方法,到目前为止我能想到的是,以产生新的列has_txn(其是1/0或真/假)时的任一个withdraw和 …

python dataframe pandas

3
推荐指数
1
解决办法
434
查看次数

指令标签之间的文本

假设我有一个名为的指令my-directive.

如何访问或操作指令代码中的指令标记之间的文本,如下所示:

<my-directive> Custom Text <my-directive>

我的指令代码:

app.directive('myDirective', function() {
    return {
        ...
        template: '<div>...Custom Text somewhere inside div... </div>'
    };
); 
Run Code Online (Sandbox Code Playgroud)

angularjs

2
推荐指数
1
解决办法
4551
查看次数

使用Java查找坐标集的中心

我正在使用Twitter4J从他/她的个人资料中检索用户的位置.我有一组地理坐标使用此调用形成多边形边界(通常为4个或更多坐标):

// Status tweet
Place place = tweet.getPlace();
GeoLocation[][] box = place.getBoundingBoxCoordinates();
Run Code Online (Sandbox Code Playgroud)

有没有办法计算这个区域/多边形/边界的中心(或近中心,或至少包含一个点)?是否有Java API?

是否有来自此帖子的 Java代码的Java等价物:

var bounds = new google.maps.LatLngBounds();
bounds.extend(results[0].geometry.location);
var center = bounds.getCenter();
Run Code Online (Sandbox Code Playgroud)

java geocoding twitter4j

2
推荐指数
2
解决办法
2342
查看次数

Oozie shell动作:exec和文件标签

我是Oozie的新手,我已经阅读了一些Oozie shell动作示例,但这让我对某些事情感到困惑.

我见过的例子中没有<file>标签.

一些例子,像Cloudera的位置,重复文件标签shell脚本:

<shell xmlns="uri:oozie:shell-action:0.2">
    <exec>check-hour.sh</exec>
    <argument>${earthquakeMinThreshold}</argument>
    <file>check-hour.sh</file>
</shell>
Run Code Online (Sandbox Code Playgroud)

Oozie的网站上,将shell脚本(${EXEC}来自job.properties 的引用,指向script.sh文件)写入两次,用#分隔.

<shell xmlns="uri:oozie:shell-action:0.1">
    ...
    <exec>${EXEC}</exec>
    <argument>A</argument>
    <argument>B</argument>
    <file>${EXEC}#${EXEC}</file>
</shell>
Run Code Online (Sandbox Code Playgroud)

还有一些例子我看过路径(HDFS或本地?)script.sh#script.sh<file>标签内部之前的位置.

<shell xmlns="uri:oozie:shell-action:0.1">
    ...
    <exec>script.sh</exec>
    <argument>A</argument>
    <argument>B</argument>
    <file>/path/script.sh#script.sh</file>
</shell>
Run Code Online (Sandbox Code Playgroud)

据我所知,任何shell脚本文件都可以包含在工作流HDFS路径中(workflow.xml所在的路径).

有人能解释这些例子中的差异,以及如何<exec>,<file>,script.sh#script.sh,和/path/script.sh#script.sh使用?

oozie

2
推荐指数
1
解决办法
3644
查看次数

从 JsonSlurper 获取 Map 的唯一键

我有需要使用 Groovy 处理的 JSON。我非常确定 JSON 只有一个键,格式如下:

{ rootKey: [...] }
Run Code Online (Sandbox Code Playgroud)

其中rootKey代表不同的值(例如“客户”、“商店”等)。

假设我使用了 JsonSlurper:

def map = jsonSlurper.parseText(myjson)
Run Code Online (Sandbox Code Playgroud)

如何获取 rootKey 字符串?

groovy json jsonslurper

2
推荐指数
1
解决办法
2440
查看次数

Cloud Functions 部署中没有 GOOGLE_APPLICATION_CREDENTIALS

我有一个与 Cloud Storage 和 BigQuery 交互的 Cloud Function,它们都属于同一个项目。从命令行部署 Cloud Function 时我遵循的通常方法是:

$ gcloud functions deploy my_function ... --set-env-vars GOOGLE_APPLICATION_CREDENTIALS=my_project_credentials.json
Run Code Online (Sandbox Code Playgroud)

my_project_credentials.json包含服务帐号和密钥以允许访问 Cloud Storage 和 BigQuery 的 json 密钥文件在哪里。

由于这是我从那时起一直采用的方式,因此我需要另一种方式来完全避免此 json 凭据文件(因为这些交互服务无论如何都属于同一个 Google Cloud 项目)。有这样的方法吗?我对谷歌云有点陌生,所以我不熟悉 IAM 的来龙去脉。

(我需要这个的另一个原因是,我有一个客户不喜欢我作为开发人员访问该 json 密钥,而且他/她不希望该 json 密钥与函数代码一起部署。请提供关于如何在 IAM 中执行此操作的一些详细信息,尤其是 BigQuery 和 Cloud Storage,因为我也无法控制 IAM)。

google-cloud-platform google-cloud-functions google-cloud-iam

2
推荐指数
1
解决办法
1052
查看次数

如果在SparkAction中使用PySpark,Oozie作业将无法运行

我在Oozie中遇到过几个SparkAction作业的例子,其中大多数都是用Java编写的.我编辑了一下并在Cloudera CDH Quickstart 5.4.0(使用Spark版本1.4.0)中运行该示例.

workflow.xml

<workflow-app xmlns='uri:oozie:workflow:0.5' name='SparkFileCopy'>
    <start to='spark-node' />

    <action name='spark-node'>
        <spark xmlns="uri:oozie:spark-action:0.1">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <prepare>
                <delete path="${nameNode}/user/${wf:user()}/${examplesRoot}/output-data/spark"/>
            </prepare>
            <master>${master}</master>
        <mode>${mode}</mode>    
            <name>Spark-FileCopy</name>
            <class>org.apache.oozie.example.SparkFileCopy</class>
            <jar>${nameNode}/user/${wf:user()}/${examplesRoot}/apps/spark/lib/oozie-examples.jar</jar>
            <arg>${nameNode}/user/${wf:user()}/${examplesRoot}/input-data/text/data.txt</arg>
            <arg>${nameNode}/user/${wf:user()}/${examplesRoot}/output-data/spark</arg>
        </spark>
        <ok to="end" />
        <error to="fail" />
    </action>

    <kill name="fail">
        <message>Workflow failed, error
            message[${wf:errorMessage(wf:lastErrorNode())}]
        </message>
    </kill>
    <end name='end' />
</workflow-app>
Run Code Online (Sandbox Code Playgroud)

job.properties

nameNode=hdfs://quickstart.cloudera:8020
jobTracker=quickstart.cloudera:8032
master=local[2]
mode=client
examplesRoot=examples
oozie.use.system.libpath=true
oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/apps/spark
Run Code Online (Sandbox Code Playgroud)

Oozie工作流示例(在Java中)能够完成并完成其任务.

不过我spark-submit用Python/PySpark 编写了一份工作.我试着去除<class>罐子

<jar>my_pyspark_job.py</jar>
Run Code Online (Sandbox Code Playgroud)

但是当我尝试运行Oozie-Spark作业时,我在日志中出错:

Launcher ERROR, reason: Main class [org.apache.oozie.action.hadoop.SparkMain], exit code [2]
Run Code Online (Sandbox Code Playgroud)

我想知道如果我使用Python/PySpark,我应该放置什么<class><jar>标签?

java oozie apache-spark pyspark cloudera-quickstart-vm

1
推荐指数
1
解决办法
6044
查看次数

绕过Spark(Scala)中每个文件的最后一行

这个问题与有关.

我在Spark中处理包含csv.gz文件的S3文件夹.每个csv.gz文件都有一个包含列名的标头.这已通过上述SO链接解决,解决方案如下所示:

val rdd = sc.textFile("s3://.../my-s3-path").mapPartitions(_.drop(1))
Run Code Online (Sandbox Code Playgroud)

现在的问题是它看起来有些文件最后有换行符('\n')(我们假设我们不确定哪个文件).因此,在将RDD转换为DataFrame时,我遇到了一些错误.现在的问题是:

如果是'\n',我如何摆脱每个文件的最后一行?

scala amazon-s3 apache-spark

1
推荐指数
1
解决办法
660
查看次数

Linux shell表达式中的变量

hour在shell中有一个包含UNIX时间的变量.

然后如果要格式化这个小时,我使用

date -u -d @$hour +"%Y-%m-%dT%H:%M:%S.000Z"
Run Code Online (Sandbox Code Playgroud)

哪个有效.但是,我想将上面表达式的结果存储到另一个变量中,所以当我这样做时:

formatted=$(( date -u -d @$hour +"%Y-%m-%dT%H:%M:%S.000Z" ))
Run Code Online (Sandbox Code Playgroud)

这是行不通的.我不知道如何hour在评估表达式中引用变量(无论它被调用).

linux bash shell

1
推荐指数
1
解决办法
611
查看次数