首页 文章 精选 留言 我的

精选列表

搜索[本地AI],共10010篇文章
优秀的个人博客,低调大师

本地windows跑Python程序调用Spark

应用场景 spark是用scala写的一种极其强悍的计算工具,spark内存计算,提供了图计算,流式计算,机器学习,即时查询等十分方便的工具,当然我们也可以通过python代码,来调用实现spark计算,用spark来辅助我们计算,使代码效率更快,用户体验更强。 操作流程 按照windows搭建Python开发环境博文,搭建python开发环境,实际已经将Spark环境部署完成了,所以直接可以用python语言写一些spark相关的程序! 代码示例: from pyspark import SparkContext sc = SparkContext("local","Simple App") doc = sc.parallelize([['a','b','c'],['b','d','d']]) words = doc.flatMap(lambda d:d).distinct().collect() word_dict = {w:i for w,i in zip(words,range(len(words)))} word_dict_b = sc.broadcast(word_dict) def wordCountPerDoc(d): dict={} wd = word_dict_b.value for w in d: if dict.get(wd[w],0): dict[wd[w]] +=1 else: dict[wd[w]] = 1 return dict print(doc.map(wordCountPerDoc).collect()) print("successful!") 结果展示: D:\Anaconda\anaconda\python.exe E:/pythonworkspace/pythontest001/Test001/test002.py Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties 17/11/21 15:00:18 INFO SparkContext: Running Spark version 1.6.1 17/11/21 15:00:21 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 17/11/21 15:00:21 INFO SecurityManager: Changing view acls to: lenovo 17/11/21 15:00:21 INFO SecurityManager: Changing modify acls to: lenovo 17/11/21 15:00:21 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(lenovo); users with modify permissions: Set(lenovo) 17/11/21 15:00:25 INFO Utils: Successfully started service 'sparkDriver' on port 60670. 17/11/21 15:00:25 INFO Slf4jLogger: Slf4jLogger started 17/11/21 15:00:25 INFO Remoting: Starting remoting 17/11/21 15:00:26 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://sparkDriverActorSystem@192.168.114.67:60684] 17/11/21 15:00:26 INFO Utils: Successfully started service 'sparkDriverActorSystem' on port 60684. 17/11/21 15:00:26 INFO SparkEnv: Registering MapOutputTracker 17/11/21 15:00:26 INFO SparkEnv: Registering BlockManagerMaster 17/11/21 15:00:26 INFO DiskBlockManager: Created local directory at C:\Users\lenovo\AppData\Local\Temp\blockmgr-a0245427-988c-4b5a-8653-ee9e228de6ba 17/11/21 15:00:26 INFO MemoryStore: MemoryStore started with capacity 511.1 MB 17/11/21 15:00:26 INFO SparkEnv: Registering OutputCommitCoordinator 17/11/21 15:00:26 INFO Utils: Successfully started service 'SparkUI' on port 4040. 17/11/21 15:00:26 INFO SparkUI: Started SparkUI at http://192.168.114.67:4040 17/11/21 15:00:27 INFO Executor: Starting executor ID driver on host localhost 17/11/21 15:00:27 INFO Utils: Successfully started service 'org.apache.spark.network.netty.NettyBlockTransferService' on port 60691. 17/11/21 15:00:27 INFO NettyBlockTransferService: Server created on 60691 17/11/21 15:00:27 INFO BlockManagerMaster: Trying to register BlockManager 17/11/21 15:00:27 INFO BlockManagerMasterEndpoint: Registering block manager localhost:60691 with 511.1 MB RAM, BlockManagerId(driver, localhost, 60691) 17/11/21 15:00:27 INFO BlockManagerMaster: Registered BlockManager 17/11/21 15:00:28 INFO SparkContext: Starting job: collect at E:/pythonworkspace/pythontest001/Test001/test002.py:5 17/11/21 15:00:28 INFO DAGScheduler: Registering RDD 2 (distinct at E:/pythonworkspace/pythontest001/Test001/test002.py:5) 17/11/21 15:00:28 INFO DAGScheduler: Got job 0 (collect at E:/pythonworkspace/pythontest001/Test001/test002.py:5) with 1 output partitions 17/11/21 15:00:28 INFO DAGScheduler: Final stage: ResultStage 1 (collect at E:/pythonworkspace/pythontest001/Test001/test002.py:5) 17/11/21 15:00:28 INFO DAGScheduler: Parents of final stage: List(ShuffleMapStage 0) 17/11/21 15:00:28 INFO DAGScheduler: Missing parents: List(ShuffleMapStage 0) 17/11/21 15:00:28 INFO DAGScheduler: Submitting ShuffleMapStage 0 (PairwiseRDD[2] at distinct at E:/pythonworkspace/pythontest001/Test001/test002.py:5), which has no missing parents 17/11/21 15:00:28 INFO MemoryStore: Block broadcast_0 stored as values in memory (estimated size 6.6 KB, free 6.6 KB) 17/11/21 15:00:28 INFO MemoryStore: Block broadcast_0_piece0 stored as bytes in memory (estimated size 4.3 KB, free 11.0 KB) 17/11/21 15:00:28 INFO BlockManagerInfo: Added broadcast_0_piece0 in memory on localhost:60691 (size: 4.3 KB, free: 511.1 MB) 17/11/21 15:00:28 INFO SparkContext: Created broadcast 0 from broadcast at DAGScheduler.scala:1006 17/11/21 15:00:28 INFO DAGScheduler: Submitting 1 missing tasks from ShuffleMapStage 0 (PairwiseRDD[2] at distinct at E:/pythonworkspace/pythontest001/Test001/test002.py:5) 17/11/21 15:00:28 INFO TaskSchedulerImpl: Adding task set 0.0 with 1 tasks 17/11/21 15:00:28 INFO TaskSetManager: Starting task 0.0 in stage 0.0 (TID 0, localhost, partition 0,PROCESS_LOCAL, 2099 bytes) 17/11/21 15:00:28 INFO Executor: Running task 0.0 in stage 0.0 (TID 0) 17/11/21 15:00:30 INFO PythonRunner: Times: total = 1240, boot = 1221, init = 19, finish = 0 17/11/21 15:00:30 INFO Executor: Finished task 0.0 in stage 0.0 (TID 0). 1222 bytes result sent to driver 17/11/21 15:00:30 INFO TaskSetManager: Finished task 0.0 in stage 0.0 (TID 0) in 1433 ms on localhost (1/1) 17/11/21 15:00:30 INFO TaskSchedulerImpl: Removed TaskSet 0.0, whose tasks have all completed, from pool 17/11/21 15:00:30 INFO DAGScheduler: ShuffleMapStage 0 (distinct at E:/pythonworkspace/pythontest001/Test001/test002.py:5) finished in 1.465 s 17/11/21 15:00:30 INFO DAGScheduler: looking for newly runnable stages 17/11/21 15:00:30 INFO DAGScheduler: running: Set() 17/11/21 15:00:30 INFO DAGScheduler: waiting: Set(ResultStage 1) 17/11/21 15:00:30 INFO DAGScheduler: failed: Set() 17/11/21 15:00:30 INFO DAGScheduler: Submitting ResultStage 1 (PythonRDD[5] at collect at E:/pythonworkspace/pythontest001/Test001/test002.py:5), which has no missing parents 17/11/21 15:00:30 INFO MemoryStore: Block broadcast_1 stored as values in memory (estimated size 5.5 KB, free 16.5 KB) 17/11/21 15:00:30 INFO MemoryStore: Block broadcast_1_piece0 stored as bytes in memory (estimated size 3.4 KB, free 19.8 KB) 17/11/21 15:00:30 INFO BlockManagerInfo: Added broadcast_1_piece0 in memory on localhost:60691 (size: 3.4 KB, free: 511.1 MB) 17/11/21 15:00:30 INFO SparkContext: Created broadcast 1 from broadcast at DAGScheduler.scala:1006 17/11/21 15:00:30 INFO DAGScheduler: Submitting 1 missing tasks from ResultStage 1 (PythonRDD[5] at collect at E:/pythonworkspace/pythontest001/Test001/test002.py:5) 17/11/21 15:00:30 INFO TaskSchedulerImpl: Adding task set 1.0 with 1 tasks 17/11/21 15:00:30 INFO TaskSetManager: Starting task 0.0 in stage 1.0 (TID 1, localhost, partition 0,NODE_LOCAL, 1894 bytes) 17/11/21 15:00:30 INFO Executor: Running task 0.0 in stage 1.0 (TID 1) 17/11/21 15:00:30 INFO ShuffleBlockFetcherIterator: Getting 1 non-empty blocks out of 1 blocks 17/11/21 15:00:30 INFO ShuffleBlockFetcherIterator: Started 0 remote fetches in 9 ms 17/11/21 15:00:31 INFO PythonRunner: Times: total = 1289, boot = 1280, init = 9, finish = 0 17/11/21 15:00:31 INFO Executor: Finished task 0.0 in stage 1.0 (TID 1). 1290 bytes result sent to driver 17/11/21 15:00:31 INFO DAGScheduler: ResultStage 1 (collect at E:/pythonworkspace/pythontest001/Test001/test002.py:5) finished in 1.377 s 17/11/21 15:00:31 INFO TaskSetManager: Finished task 0.0 in stage 1.0 (TID 1) in 1375 ms on localhost (1/1) 17/11/21 15:00:31 INFO TaskSchedulerImpl: Removed TaskSet 1.0, whose tasks have all completed, from pool 17/11/21 15:00:31 INFO DAGScheduler: Job 0 finished: collect at E:/pythonworkspace/pythontest001/Test001/test002.py:5, took 3.307445 s 17/11/21 15:00:31 INFO MemoryStore: Block broadcast_2 stored as values in memory (estimated size 352.0 B, free 20.2 KB) 17/11/21 15:00:31 INFO MemoryStore: Block broadcast_2_piece0 stored as bytes in memory (estimated size 115.0 B, free 20.3 KB) 17/11/21 15:00:31 INFO BlockManagerInfo: Added broadcast_2_piece0 in memory on localhost:60691 (size: 115.0 B, free: 511.1 MB) 17/11/21 15:00:31 INFO SparkContext: Created broadcast 2 from broadcast at PythonRDD.scala:430 17/11/21 15:00:31 INFO SparkContext: Starting job: collect at E:/pythonworkspace/pythontest001/Test001/test002.py:18 17/11/21 15:00:31 INFO DAGScheduler: Got job 1 (collect at E:/pythonworkspace/pythontest001/Test001/test002.py:18) with 1 output partitions 17/11/21 15:00:31 INFO DAGScheduler: Final stage: ResultStage 2 (collect at E:/pythonworkspace/pythontest001/Test001/test002.py:18) 17/11/21 15:00:31 INFO DAGScheduler: Parents of final stage: List() 17/11/21 15:00:31 INFO DAGScheduler: Missing parents: List() 17/11/21 15:00:31 INFO DAGScheduler: Submitting ResultStage 2 (PythonRDD[6] at collect at E:/pythonworkspace/pythontest001/Test001/test002.py:18), which has no missing parents 17/11/21 15:00:31 INFO MemoryStore: Block broadcast_3 stored as values in memory (estimated size 4.3 KB, free 24.5 KB) 17/11/21 15:00:31 INFO MemoryStore: Block broadcast_3_piece0 stored as bytes in memory (estimated size 2.8 KB, free 27.3 KB) 17/11/21 15:00:31 INFO BlockManagerInfo: Added broadcast_3_piece0 in memory on localhost:60691 (size: 2.8 KB, free: 511.1 MB) 17/11/21 15:00:31 INFO SparkContext: Created broadcast 3 from broadcast at DAGScheduler.scala:1006 17/11/21 15:00:31 INFO DAGScheduler: Submitting 1 missing tasks from ResultStage 2 (PythonRDD[6] at collect at E:/pythonworkspace/pythontest001/Test001/test002.py:18) 17/11/21 15:00:31 INFO TaskSchedulerImpl: Adding task set 2.0 with 1 tasks 17/11/21 15:00:31 INFO TaskSetManager: Starting task 0.0 in stage 2.0 (TID 2, localhost, partition 0,PROCESS_LOCAL, 2110 bytes) 17/11/21 15:00:31 INFO Executor: Running task 0.0 in stage 2.0 (TID 2) 17/11/21 15:00:33 INFO PythonRunner: Times: total = 1199, boot = 1195, init = 3, finish = 1 17/11/21 15:00:33 INFO Executor: Finished task 0.0 in stage 2.0 (TID 2). 1040 bytes result sent to driver 17/11/21 15:00:33 INFO TaskSetManager: Finished task 0.0 in stage 2.0 (TID 2) in 1235 ms on localhost (1/1) 17/11/21 15:00:33 INFO TaskSchedulerImpl: Removed TaskSet 2.0, whose tasks have all completed, from pool 17/11/21 15:00:33 INFO DAGScheduler: ResultStage 2 (collect at E:/pythonworkspace/pythontest001/Test001/test002.py:18) finished in 1.237 s 17/11/21 15:00:33 INFO DAGScheduler: Job 1 finished: collect at E:/pythonworkspace/pythontest001/Test001/test002.py:18, took 1.267822 s [{0: 1, 1: 1, 2: 1}, {2: 1, 3: 2}] successful! 17/11/21 15:00:33 INFO SparkContext: Invoking stop() from shutdown hook Process finished with exit code 0

优秀的个人博客,低调大师

本地windows跑Scala程序调用Spark

应用场景 spark是用scala写的一种极其强悍的计算工具,spark内存计算,提供了图计算,流式计算,机器学习,即时查询等十分方便的工具,所以利用scala来进行spark编程是十分必要的,下面简单书写一个spark连接mysql读取信息的例子。 操作流程 按照windows搭建Scala开发环境博文,搭建scala开发环境,实际已经将Spark环境部署完成了,所以直接可以用scala语言写一些spark相关的程序! package epoint.com.cn.test001 import org.apache.spark.sql.SQLContext import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.rdd.RDD object SparkConnMysql { def main(args: Array[String]) { println("Hello, world!") val conf = new SparkConf() conf.setAppName("wow,my first spark app") conf.setMaster("local") val sc = new SparkContext(conf) val sqlContext = new SQLContext(sc) val url = "jdbc:mysql://192.168.114.67:3306/user" val table = "user" val reader = sqlContext.read.format("jdbc") reader.option("url", url) reader.option("dbtable", table) reader.option("driver", "com.mysql.jdbc.Driver") reader.option("user", "root") reader.option("password", "11111") val df = reader.load() df.show() } } 运行结果: Hello, world! Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/D:/spark1.6/lib/spark-assembly-1.6.1-hadoop2.6.0.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/D:/spark1.6/lib/spark-examples-1.6.1-hadoop2.6.0.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/D:/kettle7.1/inceptor-driver.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] 17/11/21 11:43:53 INFO SparkContext: Running Spark version 1.6.1 17/11/21 11:43:55 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 17/11/21 11:43:56 INFO SecurityManager: Changing view acls to: lenovo 17/11/21 11:43:56 INFO SecurityManager: Changing modify acls to: lenovo 17/11/21 11:43:56 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(lenovo); users with modify permissions: Set(lenovo) 17/11/21 11:43:59 INFO Utils: Successfully started service 'sparkDriver' on port 55824. 17/11/21 11:43:59 INFO Slf4jLogger: Slf4jLogger started 17/11/21 11:43:59 INFO Remoting: Starting remoting 17/11/21 11:43:59 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://sparkDriverActorSystem@192.168.114.67:55837] 17/11/21 11:43:59 INFO Utils: Successfully started service 'sparkDriverActorSystem' on port 55837. 17/11/21 11:43:59 INFO SparkEnv: Registering MapOutputTracker 17/11/21 11:43:59 INFO SparkEnv: Registering BlockManagerMaster 17/11/21 11:43:59 INFO DiskBlockManager: Created local directory at C:\Users\lenovo\AppData\Local\Temp\blockmgr-16383e3c-7cb6-43c7-b300-ccc1a1561bb4 17/11/21 11:43:59 INFO MemoryStore: MemoryStore started with capacity 1129.9 MB 17/11/21 11:44:00 INFO SparkEnv: Registering OutputCommitCoordinator 17/11/21 11:44:00 INFO Utils: Successfully started service 'SparkUI' on port 4040. 17/11/21 11:44:00 INFO SparkUI: Started SparkUI at http://192.168.114.67:4040 17/11/21 11:44:00 INFO Executor: Starting executor ID driver on host localhost 17/11/21 11:44:00 INFO Utils: Successfully started service 'org.apache.spark.network.netty.NettyBlockTransferService' on port 55844. 17/11/21 11:44:00 INFO NettyBlockTransferService: Server created on 55844 17/11/21 11:44:00 INFO BlockManagerMaster: Trying to register BlockManager 17/11/21 11:44:00 INFO BlockManagerMasterEndpoint: Registering block manager localhost:55844 with 1129.9 MB RAM, BlockManagerId(driver, localhost, 55844) 17/11/21 11:44:00 INFO BlockManagerMaster: Registered BlockManager 17/11/21 11:44:05 INFO SparkContext: Starting job: show at SparkConnMysql.scala:25 17/11/21 11:44:05 INFO DAGScheduler: Got job 0 (show at SparkConnMysql.scala:25) with 1 output partitions 17/11/21 11:44:05 INFO DAGScheduler: Final stage: ResultStage 0 (show at SparkConnMysql.scala:25) 17/11/21 11:44:05 INFO DAGScheduler: Parents of final stage: List() 17/11/21 11:44:05 INFO DAGScheduler: Missing parents: List() 17/11/21 11:44:05 INFO DAGScheduler: Submitting ResultStage 0 (MapPartitionsRDD[1] at show at SparkConnMysql.scala:25), which has no missing parents 17/11/21 11:44:06 INFO MemoryStore: Block broadcast_0 stored as values in memory (estimated size 5.2 KB, free 5.2 KB) 17/11/21 11:44:06 INFO MemoryStore: Block broadcast_0_piece0 stored as bytes in memory (estimated size 2.5 KB, free 7.7 KB) 17/11/21 11:44:06 INFO BlockManagerInfo: Added broadcast_0_piece0 in memory on localhost:55844 (size: 2.5 KB, free: 1129.9 MB) 17/11/21 11:44:06 INFO SparkContext: Created broadcast 0 from broadcast at DAGScheduler.scala:1006 17/11/21 11:44:06 INFO DAGScheduler: Submitting 1 missing tasks from ResultStage 0 (MapPartitionsRDD[1] at show at SparkConnMysql.scala:25) 17/11/21 11:44:06 INFO TaskSchedulerImpl: Adding task set 0.0 with 1 tasks 17/11/21 11:44:06 INFO TaskSetManager: Starting task 0.0 in stage 0.0 (TID 0, localhost, partition 0,PROCESS_LOCAL, 1922 bytes) 17/11/21 11:44:06 INFO Executor: Running task 0.0 in stage 0.0 (TID 0) 17/11/21 11:44:06 INFO JDBCRDD: closed connection 17/11/21 11:44:06 INFO Executor: Finished task 0.0 in stage 0.0 (TID 0). 3472 bytes result sent to driver 17/11/21 11:44:06 INFO TaskSetManager: Finished task 0.0 in stage 0.0 (TID 0) in 224 ms on localhost (1/1) 17/11/21 11:44:06 INFO TaskSchedulerImpl: Removed TaskSet 0.0, whose tasks have all completed, from pool 17/11/21 11:44:06 INFO DAGScheduler: ResultStage 0 (show at SparkConnMysql.scala:25) finished in 0.261 s 17/11/21 11:44:06 INFO DAGScheduler: Job 0 finished: show at SparkConnMysql.scala:25, took 1.467252 s +---+----+----+------------+------------------+---------+-------+ | id|name| age| phone| email|startdate|enddate| +---+----+----+------------+------------------+---------+-------+ | 11| 徐心三| 24| 2423424| 2423424@qq.com| null| null| | 33| 徐心七| 23| 23232323| 13131@qe| null| null| | 55| 徐彬| 22| 15262301036|徐彬757661238@ww.com| null| null| | 44| 徐成|3333| 23423424332| 2342423@qq.com| null| null| | 66| 徐心四| 23|242342342423| 徐彬23424@qq.com| null| null| | 11| 徐心三| 24| 2423424| 2423424@qq.com| null| null| | 33| 徐心七| 23| 23232323| 13131@qe| null| null| | 55| 徐彬| 22| 15262301036|徐彬757661238@ww.com| null| null| | 44| 徐成|3333| 23423424332| 2342423@qq.com| null| null| | 66| 徐心四| 23|242342342423| 徐彬23424@qq.com| null| null| | 88| 徐心八| 123| 131231312| 123123@qeqe| null| null| | 99| 徐心二| 23| 13131313| 1313133@qeq.com| null| null| |121| 徐心五| 13| 123131231| 1231312@qq.com| null| null| |143| 徐心九| 23| 234234| 徐彬234@wrwr| null| null| +---+----+----+------------+------------------+---------+-------+ only showing top 14 rows 17/11/21 11:44:06 INFO SparkContext: Invoking stop() from shutdown hook 17/11/21 11:44:06 INFO SparkUI: Stopped Spark web UI at http://192.168.114.67:4040 17/11/21 11:44:06 INFO MapOutputTrackerMasterEndpoint: MapOutputTrackerMasterEndpoint stopped! 17/11/21 11:44:06 INFO MemoryStore: MemoryStore cleared 17/11/21 11:44:06 INFO BlockManager: BlockManager stopped 17/11/21 11:44:06 INFO BlockManagerMaster: BlockManagerMaster stopped 17/11/21 11:44:06 INFO OutputCommitCoordinator$OutputCommitCoordinatorEndpoint: OutputCommitCoordinator stopped! 17/11/21 11:44:06 INFO RemoteActorRefProvider$RemotingTerminator: Shutting down remote daemon. 17/11/21 11:44:06 INFO RemoteActorRefProvider$RemotingTerminator: Remote daemon shut down; proceeding with flushing remote transports. 17/11/21 11:44:06 INFO SparkContext: Successfully stopped SparkContext 17/11/21 11:44:07 INFO ShutdownHookManager: Shutdown hook called 17/11/21 11:44:07 INFO ShutdownHookManager: Deleting directory C:\Users\lenovo\AppData\Local\Temp\spark-7877d903-f8f7-4efb-9e0c-7a11ac147153

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册