小编Jos*_*der的帖子

为什么在Spark数据集上调用缓存需要很长时间?

我正在加载大型数据集,然后在整个代码中缓存它们以供参考.代码看起来像这样:

val conversations = sqlContext.read
  .format("com.databricks.spark.redshift")
  .option("url", jdbcUrl)
  .option("tempdir", tempDir)
  .option("forward_spark_s3_credentials","true")
  .option("query", "SELECT * FROM my_table "+
                   "WHERE date <= '2017-06-03' "+
                   "AND date >= '2017-03-06' ")
  .load()
  .cache()
Run Code Online (Sandbox Code Playgroud)

如果我不使用缓存,代码会快速执行,因为数据集会被懒惰地评估.但是,如果我放入缓存(),该块需要很长时间才能运行.

从在线Spark UI的事件时间轴,似乎SQL表被传输到工作节点,然后缓存在工作节点上.

为什么缓存会立即执行?源代码似乎仅在计算数据时将其标记为缓存:

调用缓存或持久性时,数据集源代码调用CacheManager.scala中的此代码:

  /**
   * Caches the data produced by the logical representation of the given [[Dataset]].
   * Unlike `RDD.cache()`, the default storage level is set to be `MEMORY_AND_DISK` because
   * recomputing the in-memory columnar representation of the underlying table is expensive.
   */ …
Run Code Online (Sandbox Code Playgroud)

caching scala dataset apache-spark

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

熊猫左外连接排除

如何在 Pandas 中进行左外连接(不包括交点)?

我有 2 个熊猫数据框

df1 = pd.DataFrame(data = {'col1' : ['finance', 'finance', 'finance', 'accounting', 'IT'], 'col2' : ['az', 'bh', '', '', '']}) 
df2 = pd.DataFrame(data = {'col1' : ['finance', 'finance', 'finance', 'finance', 'finance'], 'col2' : ['', 'az', '', '', '']})
Run Code Online (Sandbox Code Playgroud)

df1

    col1    col2
0   finance az
1   finance bh
2   finance 
3   accounting  
4   IT  
Run Code Online (Sandbox Code Playgroud)

df2

    col1    col2
0   finance 
1   finance az
2   finance 
3   finance 
4   finance 
Run Code Online (Sandbox Code Playgroud)

如您所见,数据框也有空白值。我尝试使用这个例子,但它没有给我想要的结果。

common = df1.merge(df2,on=['col1','col2'])
df3=df1[(~df1.col1.isin(common.col1))&(~df1.col2.isin(common.col2))]
Run Code Online (Sandbox Code Playgroud)

我希望输出看起来像

    col1 …
Run Code Online (Sandbox Code Playgroud)

python left-join pandas

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

你如何编译Java 9中的jar文件?

Java 9引入了模块的概念,它没有明确地替换jar文件,但是旧--classpath选项似乎已经消失了.

该命令javac --help不再提及类路径.

我正在尝试针对JUnit编译一些学生作品:

> javac *.java --classpath junit.jar
Run Code Online (Sandbox Code Playgroud)

但是我会遇到各种错误,具体取决于我的尝试.对于上面的例子:

javac: invalid flag: --classpath
Run Code Online (Sandbox Code Playgroud)

我的Java版本是:

> java --version
java 9
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
Run Code Online (Sandbox Code Playgroud)

我不是试图使用一个模块,只是一个.jar文件,我可以通过指定一个libs文件夹包含在IntelliJ中.

编辑:我真正的问题是我没有包括正确的罐子.针对IntelliJ的默认JUnit5配置进行编译工作:

 javac -classpath "C:\Program Files\JetBrains\IntelliJ IDEA 2017.2.5\plugins\junit\lib\junit-jupiter-api-5.0.0.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2017.2.5\plugins\junit\lib\opentest4j-1.0.0.jar" *.java
Run Code Online (Sandbox Code Playgroud)

java classpath java-9 junit5

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

在 Windows 上通过交互式提示打印 Python 历史记录

我正在开发 Windows 10 上的默认 python 解释器,我可以使用箭头键一一浏览它们。但是是否有像historybash shell 中的命令那样的选项,可以显示到目前为止输入的所有命令?

这与如何在交互式 Python 中查看整个命令历史记录几乎是重复的。,只不过它适用于 Windows 10而不是 macos/*nix。那里的解决方案要么推荐 iPython(我不经常使用),要么使用 readline(Windows 上不可用)。

我已经安装了 pyreadline 包,但在这种情况下它似乎不是一个直接替代品。

C:\Users\yoder>python
Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
Run Code Online (Sandbox Code Playgroud)

python windows

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

协作者仍可在 Google 云端硬盘中访问已删除的文件。我怎样才能完全删除它?

当我从 Google 驱动器中删除其他人与我共享的文件时,它向我显示了一条消息,例如“协作者仍然可以访问一个已删除的文件”。

它不再出现在该文件夹中,但会显示在“与我共享”中吗?我怎样才能彻底删除它?

google-drive-api google-drive-android-api

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

在Python中到达文件末尾时,readline返回什么值?

一个可以使用经典循环

file_in = open('suppliers.txt', 'r')
line = file_in.readline()

while line:
    line = file_in.readline()
Run Code Online (Sandbox Code Playgroud)

在Python中逐行读取文件。

但是,当循环退出时,“线”有什么值?Python 3文档仅读取:

readline(大小= -1)

从流中读取并返回一行。如果指定了大小,则最多将读取大小字节。

对于二进制文件,行终止符始终为b'\ n';对于文本文件,open()的newline参数可用于选择识别的行终止符。

编辑

在我的Python(3.6.1)版本中,如果以二进制模式打开文件,help(file_in.readline)

readline(size=-1, /) method of _io.BufferedReader instance

    Read and return a line from the stream.

    If size is specified, at most size bytes will be read.

    The line terminator is always b'\n' for binary files; for text
    files, the newlines argument to open can be used to select the line
    terminator(s) recognized.
Run Code Online (Sandbox Code Playgroud)

上面引用的 …

python readline

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

如果您的库与错误的Python版本一起使用,那么引发适当的内置异常是什么?

我有一个简单的库作为.py文件分发.如果从Python 2而不是Python 3调用库,我想引发一个异常:

def _check_version():
    if sys.version_info < (3,):
        raise _____Exception('This library depends on Python 3 strings. Please ensure you are using Python 3 instead of Python 2')
Run Code Online (Sandbox Code Playgroud)

我应该提出什么内置异常?(如何填写上面的空白?)我在内置异常中找到的最接近的异常是NotImplementedError.DeprecationWarning感觉很接近,但在这种情况下,例外情况更合适.

python exception version python-3.x

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

与 PyCharm 中的 stash 的区别

PyCharm 允许用户比较项目中的任何两个文件,或者比较任何具有先前 Git 提交的文件。有没有办法在存储中区分文件及其版本?

当然,这可以从命令行使用 Git 进行,但我想使用 IntelliJ 的图形编辑器来完成。

git intellij-idea pycharm

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

如何在vim中编辑现有的键映射?

如何在 vim 中编辑现有映射?我使用标准映射命令之一在我的 .vim 文件中设置映射:

map ^A o]]></code>^M<GRD minus="" summary="">^M^M<p></p>^M^M</GRD>^M^M<code><![CDATA[0kkkkkk5ehi
Run Code Online (Sandbox Code Playgroud)

我想编辑这个长命令以使用“matlab”而不是代码,例如:

map ^A o]]></matlab>^M<GRD minus="" summary="">^M^M<p></p>^M^M</GRD>^M^M<matlab><![CDATA[0kkkkkk5ehi
Run Code Online (Sandbox Code Playgroud)

但是,我不想编辑 .vim 文件——我将再次使用原始映射。我只想更改当前会话的映射。我试过 :map ^A,但这仅显示当前映射,我无法复制显示的文本。

PS 注意 ^M 和 ^A 字符是用 Ctrl-Q Ctrl-M 等插入的。

vim keymapping keymaps

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

进程结束,退出代码-1073740791(0xC0000409)pycharm错误

我正在尝试fastText与PyCharm 一起使用。每当我运行以下代码时:

import fastText

model=fastText.train_unsupervised("data_parsed.txt")

model.save_model("model")
Run Code Online (Sandbox Code Playgroud)

该过程退出,并显示以下错误:

Process finished with exit code -1073740791 (0xC0000409)
Run Code Online (Sandbox Code Playgroud)

是什么导致此错误,如何避免该错误?

python pycharm fasttext

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